csv导入到数据库(目标参考注释)
时间:2021-07-01 10:21:17
帮助过:3人阅读
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数据导入成功!‘)
csv导入到数据库(目标参考注释)
标签:cal sid into epo select div exec 端口 rac