更新
我看到了一些指导here,但是当我使用下面的代码将数据从pandas插入Oracle时,我似乎无法弄清楚如何指定列类型。例如,一列是日期,但在导入时,它会转换为字符串。
另外,如果我希望我的Oracle数据库中的列名略有不同,我是否需要先通过pandas重命名列,然后通过to_sql将它们发送到Oracle?
import pandas as pd
from sqlalchemy import create_engine
import cx_Oracle as cx
pwd=input('Enter Password for server:')
engine = create_engine('oracle+cx_oracle://schema:'+pwd+'@server:1521/service_name')
df=pd.read_csv(r'path\data.csv',encoding='latin-1',index_col=0)
name='table1'
df.to_sql(name,engine,if_exists='append')
答案 0 :(得分:4)
请阅读pandas文档的SQL Data Types部分以及to_sql
方法。
您可以使用dtype
参数指定数据类型,如下所示:
from sqlalchemy.types import String, Date, DateTime
df.to_sql(table_name, engine, if_exists='append', dtype={'mydatecol': DateTime})
关于列的名称,最简单的方法是在调用to_sql
之前重命名数据框中的列:
df2 = df.rename(columns={'oldname': 'newname', ...})