使用python将数据帧插入oracle表时出错

时间:2017-12-04 01:12:15

标签: python oracle pandas sqlalchemy cx-oracle

我正在查询oracle表(Table1)到pandas数据帧,然后修改以将其插入到具有相同表/列定义的另一个oracle表(Table2)中。

我也在我的代码中将'object'数据类型更改为VARCHAR,以避免CLOB并加速插入。

import cx_Oracle
import pandas as pd
from sqlalchemy import types

conn = cx_Oracle.connect('username/password@dbname')

df = pd.read_sql(sql='SELECT * FROM TABLE1',con=conn)

dtyp = {c:types.VARCHAR(df[c].str.len().max())
    for c in df.columns[df.dtypes == 'object'].tolist()}

df.to_sql('TABLE2', conn, index=False, if_exists='append', dtype=dtyp, chunksize=10**4)

源表和目标表中的主键列ACCOUNT_ID是VARCHAR2(100)。我收到了错误:

ValueError: ACCOUNT_ID (VARCHAR(8)) not a string

请帮帮我。

0 个答案:

没有答案