作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
移动数据时,您应该确保TO
和FROM
命令使用完全相同的选项。如果您的客户端编码不是 UTF8,则为一个命令而不是另一个命令指定 ENCODING
可能会导致错误或无提示地损坏数据。
关于postgresql - Postgres : Error when using COPY from a CSV with timestamptz type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711012/
我是一名优秀的程序员,十分优秀!