pandas Snowflake无法将变量值转换为DATE

eufgjt7s  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(144)

我有一个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')

有什么想法可能导致错误?任何帮助或建议将非常感谢。

fdbelqdn

fdbelqdn1#

我认为出现这个错误是因为您的目标表期望得到DATE类型,它只包括YYYY-MM-DD部分,而datetime64[ns]有整个时间戳,直到十进制秒。如果您只想在Snowflake中的目标表中有日期,请尝试在写入Snowflake之前从时间戳中提取日期部分:

df['date_col']=pd.to_datetime(df['date_col'],errors='coerce').dt.date

如果您想保存整个时间戳值,然后使用类型为的目标列,例如TIMESTAMP,那么您的代码应该可以工作。

相关问题