gpt4 book ai didi

postgresql - Postgres : Error when using COPY from a CSV with timestamptz type

转载 作者:行者123 更新时间:2023-11-29 12:18:45 33 4
gpt4 key购买 nike

我正在使用 Postgres 9.5.3(在 Ubuntu 16.04 上)并且我有一个包含一些 timestamptz 字段的表

...
datetime_received timestamptz NULL,
datetime_manufactured timestamptz NULL,
...

我使用以下 SQL 命令生成 CSV 文件:

COPY (select * from tmp_table limit 100000) TO '/tmp/aa.csv' DELIMITER ';' CSV HEADER;

并使用:

COPY tmp_table FROM '/tmp/aa.csv' DELIMITER ';' CSV ENCODING 'UTF-8';

导入到表中。

CSV 文件中的行示例:

CM0030;;INV_AVAILABLE;2016-07-30 14:50:42.141+07;;2016-08-06 00:00:000+07;FAHCM00001;;123;;;;;1.000000;1.000000;;;;;;;;80000.000000;;;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07;

但是我在运行第二条命令时遇到了如下错误:

ERROR:  invalid input syntax for type timestamp with time zone: "datetime_received"
CONTEXT: COPY inventory_item, line 1, column datetime_received: "datetime_received"

我的数据库的时区是:

 show timezone;
TimeZone
-----------
localtime(GMT+7)
(1 row)

是否有遗漏步骤或配置错误?

如有任何建议,我们将不胜感激!

最佳答案

您看到的错误意味着 Postgres 正在尝试(但失败了)将字符串 'datetime_received' 转换为时间戳值。

发生这种情况是因为 COPY 试图将标题行插入到您的表格中。您需要在 COPY FROM 命令中包含一个 HEADER 子句,就像您为 COPY TO 所做的那样。

更一般地说,当使用COPY 移动数据时,您应该确保TOFROM 命令使用完全相同的选项。如果您的客户端编码不是 UTF8,则为一个命令而不是另一个命令指定 ENCODING 可能会导致错误或无提示地损坏数据。

关于postgresql - Postgres : Error when using COPY from a CSV with timestamptz type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711012/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com