Python copy_expert加载空数据的问题

时间:2019-06-17 03:05:29

标签: python-3.x postgresql psycopg2

我无法使用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:类型为时间戳“”的无效输入语法。感谢脚本的任何帮助,或为我提供正确的阅读源。

1 个答案:

答案 0 :(得分:0)

我可以通过添加force_null (column_name)来做到这一点。例如,如果field3是您的时间戳记:

copy client_marketing (field1, field2, field3) from stdin with (
    format csv,
    delimiter ',',
    header,
    force_null (field3)
);

希望有帮助。参见https://www.postgresql.org/docs/10/sql-copy.html