2021-01-28 16:05:10 ![]()
一、数据准备 CREATE TABLE AM_DC.FXM_TEST
(CLO1 VARCHAR2(12), CLO2 NUMBER(8,0), CLO3 NUMBER(36,2), CLO4 NUMBER(36,4),CLO5 VARCHAR2(12));commit;
二、代码 注意:必要时需要先删除数据库中数据再导数入库。 #!/usr/bin/env python# -*- coding: utf-8 -*-import cx_Oracleimport csvimport xlrdimport osimport reclass ImportOracle(object): def inoracle(self): pass def ConnOracle(self): conn = cx_Oracle.connect('用户名', '密码', 'ip:端口/服务名') cursor = conn.cursor() # 给字符数据加上引号 fields = ['\'' i '\'' for i in self.title] # 从第一列数据开始 fields_str = ', '.join(fields[0:]) #print(fields_str) for i in self.data: print(i) # 插入引号,确保格式正确 a=[ '\'' str(b) '\'' for b in i] value = ','.join(a[0:]) # 去掉数据中的[NULL] sql = 'insert into %s values(%s)' % (self.table_name, re.sub('\[Null\] ', '', value)) # 打印生成的SQL print(sql '\n\n\n') # 执行SQL语句并提交 cursor.execute(sql) conn.commit() # 全部提交后关闭连接,释放游标 cursor.close() conn.close()class ImportOracleCsv(ImportOracle): def inoracle(self): contents=[] with open(self.filename, 'r') as f: reader = csv.reader(f) # 将科学计数现实的数字显示 for i in reader: contents.append(i) # 获取第一行为列名 title = contents[0] # 获取数据,去掉第一行 data = contents[1:] return (title, data)class ImportOracleExcel(ImportOracle): def inoracle(self): wb = xlrd.open_workbook(self.filename) #使用第一个sheet表 sheet1 = wb.sheet_by_index(0) title = sheet1.row_values(0) #获取第一行作为表头 data = [sheet1.row_values(row) for row in range(1, sheet1.nrows)] print(data) return (title, data)#导入非excel文档报错'Undefine file type'class ImportError(ImportOracle): def inoracle(self): print('Undefine file type') return 0class ChooseFactory(object): choose = {} choose['csv'] = ImportOracleCsv() choose['xlsx'] = ImportOracleExcel() choose['xls'] = ImportOracleExcel() def choosefile(self, ch): if ch in self.choose: op = self.choose[ch] else: op = ImportError() return opif __name__ == '__main__': os.chdir(r'C:\\')#改变当前工作目录到指定的路径 file_name = 'fxm_test.xlsx' table_name = 'fxm_test' #获取文件夹类型 op = file_name.split('.')[-1] factory = ChooseFactory() cal = factory.choosefile(op) cal.filename = file_name (cal.title, cal.data) = cal.inoracle() cal.table_name = table_name cal.ConnOracle()123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 三、结果 打开CSDN,阅读体验更佳 相关推荐 ![]() |
|