Advertisement
Guest User

Untitled

a guest
Jul 7th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. import cx_Oracle
  2. import re
  3. import os
  4. import csv
  5. import sys
  6. import getopt
  7. import ftplib
  8. import ntpath
  9.  
  10. #os.environ['NLS_LANG'] = "en_US.ISO8859-1"
  11. #os.environ['NLS_LANG'] = ".UTF8"
  12.  
  13. def main(argv):
  14. inputfile = ''
  15. outputfile = ''
  16. usage = 'test.py -i <inputfile> -o <outputfile>'
  17. flist = []
  18. try:
  19. opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
  20. except getopt.GetoptError:
  21. print usage
  22. sys.exit(2)
  23. for opt, arg in opts:
  24. if opt == '-h':
  25. print 'test.py -i <inputfile> -o <outputfile>'
  26. sys.exit()
  27. elif opt in ("-i", "--ifile"):
  28. inputfile = arg
  29. elif opt in ("-o", "--ofile"):
  30. outputfile = arg
  31. elif len(sys.argv) != 2:
  32. print usage
  33. sys.exit(2)
  34. flist.append(inputfile)
  35. flist.append(outputfile)
  36. return flist
  37.  
  38. class Extractor(object):
  39.  
  40. def __init__(self, iput, oput):
  41. self.oracle_server = "my_oracle_server"
  42. self.oracle_password = "my_oracle_password"
  43. self.oracle_port = "1521"
  44. self.oracle_sid = "MYSID"
  45. self.oracle_user = "MYUSER"
  46. self.ftp_server = 'my_ftp_psw'
  47. self.ftp_user = 'my_ftp_user'
  48. self.ftp_passwort = 'my_ftp_passwort'
  49. self.sql_file = os.path.join(os.getcwd(),iput)
  50. self.csv_file = os.path.join(os.getcwd(),oput)
  51. self.dsnStr = cx_Oracle.makedsn(self.oracle_server, self.oracle_port, self.oracle_sid)
  52. self.connection = cx_Oracle.connect(user=self.oracle_user, password=self.oracle_password, dsn=self.dsnStr)
  53. self.cursor = self.connection.cursor()
  54.  
  55. def execute_sql(self, file):
  56. self.f = open(file)
  57. self.sql_statement = self.f.read()
  58. self.cursor.execute(self.sql_statement)
  59.  
  60. def extract_from_db(self):
  61. self.column_list = [i[0] for i in self.cursor.description]
  62. self.columns = ';'.join(self.column_list)
  63. with open(self.csv_file,'w') as outfile:
  64. outfile.write(self.columns+"n")
  65. writer = csv.writer(outfile, delimiter =";")
  66. for row in self.cursor:
  67. writer.writerow(row)
  68.  
  69. def transfer_file(self):
  70. print "Transferring " + self.csv_file + " ..."
  71. self.session = ftplib.FTP(self.ftp_server, self.ftp_user, self.ftp_passwort )
  72. self.file = open(self.csv_file,'rb')
  73. self.session.storlines('STOR ' + ntpath.basename(self.csv_file), self.file) # send the file
  74. self.file.close()
  75. self.session.quit()
  76. print "Complete."
  77.  
  78.  
  79. if __name__ == '__main__':
  80. plist=main(sys.argv[1:]) # very inept, doesn't not exit as intended when number of arguments does not equal 2
  81. ext = Extractor(plist[0], plist[1])
  82. ext.execute_sql(ext.sql_file)
  83. ext.extract_from_db()
  84. ext.cursor.close()
  85. ext.connection.close()
  86. ext.transfer_file()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement