我有一个panda Dataframe df
,我想添加到Snowflake中的一个表中,但是当我运行下面的代码时,我得到一个编程错误,说它无法将一个值转换为日期格式。
import snowflake.connector
from snowflake.connector.pandas_tools import write_pandas
success, nchunks, nrows, _ = write_pandas(cnn, df, "TABLE_NAME", quote_identifiers=False)
>>> ProgrammingError: 100071 (22000): Failed to cast variant value 1466467200000000 to DATE
我试了几件事:
1.我试着找出这个值在我的 Dataframe 中的位置,但是下面的命令什么也没有返回,这真的很奇怪!我也看了看原始的csv文件,没有发现任何格式错误。
df[df.eq("1466467200000000").any(1)]
df[df.eq(1466467200000000).any(1)]
1.日期列已经被解析,当我打印df.dtypes
时,日期列是正确的datetime64[ns]
类型。
1.我试着运行下面的代码来再次解析日期列,强制执行任何错误--但这没有任何区别。
df['date_col']=pd.to_datetime(df['date_col'],errors='coerce')
有什么想法可能导致错误?任何帮助或建议将非常感谢。
1条答案
按热度按时间fdbelqdn1#
我认为出现这个错误是因为您的目标表期望得到
DATE
类型,它只包括YYYY-MM-DD部分,而datetime64[ns]
有整个时间戳,直到十进制秒。如果您只想在Snowflake中的目标表中有日期,请尝试在写入Snowflake之前从时间戳中提取日期部分:如果您想保存整个时间戳值,然后使用类型为的目标列,例如
TIMESTAMP
,那么您的代码应该可以工作。