我正在使用以下代码使用panda将数据从excel文件加载到snowflake
import pandas as pd
import snowflake.connector as snowCtx
from snowflake.connector.pandas_tools import pd_writer,write_pandas
df=pd.read_excel(open(r'SampleSuperstore.xlsx', 'rb'),sheet_name='Orders')
df.columns = df.columns.str.upper()
print(df)
conn = snowCtx.connect(
user='username',
password='password',
account='account',
database='superstore',
schema='PUBLIC'
)
table_name='ORDERS'
success, nchunks, nrows, _ = write_pandas(conn,df,table_name,
chunk_size = 300,
schema = 'PUBLIC')
print(success, nchunks, nrows)
excel中的日期列如下
Order_Date Ship_Date
08-11-2016 11-11-2016
即使在熊猫数据帧中,它也显示相同的
Order_Date Ship_Date
08-11-2016 11-11-2016
当我在雪花中查询结果时,我得到的结果如下
ORDER_DATE SHIP_DATE
1478563200000000 1478822400000000
如果我将雪花中的数据类型更改为最新数据类型,则会出现一个错误,说明变体数据类型错误。
我不确定是否有办法解决从Excel到Snowflake的链中的问题,但这是一个以微秒为单位的Unix纪元,这可以将其转换为
set orderdate = 1478563200000000;
set shipdate = 1478822400000000;
select dateadd('us',$orderdate,'1970-01-01')::date ORDERDATE
,dateadd('us',$shipdate, '1970-01-01')::date SHIPDATE
;
作为一种变通方法,您可以将日期转换为字符串。Snowflake将隐式地将它们转换为日期:
df['ORDER_DATE'] = df['ORDER_DATE'].astype(str)
df['SHIP_DATE'] = df['SHIP_DATE'].astype(str)
table_name='ORDERS'
success, nchunks, nrows, _ = write_pandas(conn,df,table_name,
chunk_size = 300,
schema = 'PUBLIC')