|
2021-01-28 16:05:10
1點(diǎn)贊
一、數(shù)據(jù)準(zhǔn)備 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;
二、代碼 注意:必要時(shí)需要先刪除數(shù)據(jù)庫中數(shù)據(jù)再導(dǎo)數(shù)入庫。 #!/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:端口/服務(wù)名')
cursor = conn.cursor()
# 給字符數(shù)據(jù)加上引號(hào)
fields = ['\'' i '\'' for i in self.title]
# 從第一列數(shù)據(jù)開始
fields_str = ', '.join(fields[0:])
#print(fields_str)
for i in self.data:
print(i)
# 插入引號(hào),確保格式正確
a=[ '\'' str(b) '\'' for b in i]
value = ','.join(a[0:])
# 去掉數(shù)據(jù)中的[NULL]
sql = 'insert into %s values(%s)' % (self.table_name, re.sub('\[Null\] ', '', value))
# 打印生成的SQL
print(sql '\n\n\n')
# 執(zhí)行SQL語句并提交
cursor.execute(sql)
conn.commit()
# 全部提交后關(guān)閉連接,釋放游標(biāo)
cursor.close()
conn.close()class ImportOracleCsv(ImportOracle):
def inoracle(self):
contents=[]
with open(self.filename, 'r') as f:
reader = csv.reader(f)
# 將科學(xué)計(jì)數(shù)現(xiàn)實(shí)的數(shù)字顯示
for i in reader:
contents.append(i)
# 獲取第一行為列名
title = contents[0]
# 獲取數(shù)據(jù),去掉第一行
data = contents[1:]
return (title, data)class ImportOracleExcel(ImportOracle):
def inoracle(self):
wb = xlrd.open_workbook(self.filename)
#使用第一個(gè)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)#導(dǎo)入非excel文檔報(bào)錯(cuò)'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:\\')#改變當(dāng)前工作目錄到指定的路徑
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 三、結(jié)果 打開CSDN,閱讀體驗(yàn)更佳 相關(guān)推薦 更多相似內(nèi)容
|
|
|