-
DataFrame数据一次性写入Oracle数据库
需求:将程序处理后的dataframe结果数据批量插入Oracle某个用户的表格中,数据包括VARCHAR2, NUMBER, DATE等多种格式,某些单元格包含空值,且空值不能用0填充
-
遇到的问题
1、查到的一种方法是先在Oracle中创建好表格,将dataframe转换为list,再利用executemany()函数进行批量插入,执行时程序未报错,Oracle表格中没有数据,出错程序如下
import cx_Oracle
#批量写入数据函数
def save2oracle(db_w, insert_l, insert_sql):
cursor_oracle = db_w.cursor()
cursor_oracle.executemany(insert_sql, insert_l)
cursor_oracle.close()
#与数据库建立连接的参数
tns_write = cx_Oracle.makedsn("localhost",1521, "orcl")
db_write = cx_Oracle.connect('用户名','密码',tns_write)
#数据写入
result2list = results.values.tolist()
insert_sql = """insert into TABLENAME(字段1,字段2,字段3,字段4,字段5)
values(:1,:2,to_date(:3,'yyyy-mm-dd'),:4,:5)"""
save2oracle(db_write, result2list, insert_sq