熊猫和SQL炼金术:指定列数据类型

Dan*_*ty2 2 oracle sqlalchemy python-3.x 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')
Run Code Online (Sandbox Code Playgroud)

van*_*van 5

请阅读pandas文档中的“ SQL数据类型”部分以及该to_sql方法。

您可以使用如下dtype参数来指定数据类型:

from sqlalchemy.types import String, Date, DateTime
df.to_sql(table_name, engine, if_exists='append', dtype={'mydatecol': DateTime})
Run Code Online (Sandbox Code Playgroud)

至于列的名称,最简单的方法是在调用之前在数据框中重命名列to_sql

df2 = df.rename(columns={'oldname': 'newname', ...})
Run Code Online (Sandbox Code Playgroud)