我无法使用copy_expert将csv导入postgres中的表中。该错误归因于空值。
我在db中的字段类型是允许为空。通过插入手动插入证明是成功的
根据到目前为止的理解,这是因为copy_expert将空值转换为文本,这就是为什么它在时间戳数据类型上失败的原因。但是,我无法找到正确的语法来强制将null强制为null。下面的代码段:
with open(ab, 'r') as f:
cur.copy_expert("""COPY client_marketing (field1,field2,field3) FROM STDIN DELIMITER ',' CSV HEADER""", f)
错误消息:
DataError:类型为时间戳“”的无效输入语法。感谢脚本的任何帮助,或为我提供正确的阅读源。
答案 0 :(得分:0)
我可以通过添加force_null (column_name)
来做到这一点。例如,如果field3
是您的时间戳记:
copy client_marketing (field1, field2, field3) from stdin with (
format csv,
delimiter ',',
header,
force_null (field3)
);