csv导入到数据库(目标参考注释)

数据库:oracle 
结果表:

 

 当我把表格日期改成下图再导入一次:

 

 结果:

 

 

 



import
cx_Oracle as cx import csv #flag是你的日期列在哪一列,默认第一列 def save_data(reader,info,table_data,flag =1): #目标:1、如果数据库中没有数据,那么所有数据都插入 # 2、如果数据库里数据日期大于当前需要插入的数据日期,那么不插入 for i, rows in enumerate(reader): rowsdata = '' if i > 0: for j in range(len(rows)): rowsdata += '\'' + rows[j] + '\',' #构造values('','','',) rowsdata = rowsdata[:-1] #去掉末尾的 , if info[0][0] is None or info[0][0] < int(rows[flag - 1]): #参照【目标】,info[0][0]就是数据库里最大的,参考file_addr函数的sql cursor.execute("insert into " + table_data + " values( " + rowsdata + ")") #执行导入 conn.commit() def file_addr(): # 有其他表直接再新增函数就可以 f = open('E:/shuju/3.csv') reader = csv.reader(f) sql = 'select max(oc_date) from reportdata.dw_data_hy' cursor.execute(sql) info = cursor.fetchall() save_data(reader,info,table_data,flag=2) #如果不是第一列,在这里加flag f.close() if __name__ == '__main__': table_data = 'dw_data_hy' #表名 username = 'reportdata' #数据库名 passwd = 'reportdata' #数据库密码 host = 'localhost' # ip port = '1521' # 端口 sid = 'orcl' #数据库实例名 tns = cx.makedsn(host,port,sid) #tns固定搭配 conn = cx.connect(username,passwd,tns) #数据库连接 cursor = conn.cursor() #启用游标指针 file_addr() print('XXX数据导入成功!')

 

posted @ 2020-04-23 11:34  欲乘风上云霄  阅读(421)  评论(0编辑  收藏  举报