我正在查询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
请帮帮我。