今天有同事问我怎么用python将本地Excel文件上传到Oracle,不会做这个的同事还蛮多的,下面的代码是很久以前在网上找的,需要的朋友可以借鉴一下 这个脚本只需要调整文件的名称、路径、库名.表名以及链接信息(下面已经注释),使用时要注意文件字段的个数、顺序需要和数据库一致 # encoding=gbk import cx_Oracle import csv import xlrd import os import re class ImportOracle(object): def inoracle(self): pass def ConnOracle(self): #Oracle连接信息 conn = cx_Oracle.connect('SYSTEM/admin@XX.XX.XX.XX/orcl') cursor = conn.cursor() # 给字符数据加上引号 fields = ['\''+i+'\'' for i in self.title] # 从第一列的数据加载 fields_str = ', '.join(fields[0:]) for i in self.data: # 插入引号,确保格式正确 a=[ '\''+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)] return (title, data) #导入非excel文档报错'Undefine file type' class ImportError(ImportOracle): def inoracle(self): print('Undefine file type') return 0 class 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 op if __name__ == "__main__": #文件路径 os.chdir(r'C:\Users\liuhu\Desktop') #本地的文件名 file_name = '行政组织数据-20220117.csv' #输入想要插入的库名.表名 table_name = 'BI.XZJG_DATA_I_W' #获取文件夹类型 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()
python脚本上传本地Excel到Oracle
最新推荐文章于 2024-07-10 19:27:42 发布