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

import cx_Oracle as cximport 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数据导入成功!)

 

相关文章