Postgres COPY整数的语法无效

时间:2017-03-22 09:55:04

标签: postgresql

我的桌子,

       Table "public.product_status"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 id     | integer               | not null
 code   | character varying(10) |
 notes  | text                  |

我的CSV文件的第一行,

1,S,blah blah blah

复制命令,

=# copy product_status from 'status_table.csv' with csv;
ERROR:  invalid input syntax for integer: "1"
CONTEXT:  COPY product_status, line 1, column id: "1"

真的不明白这是一个整数的无效语法! 甚至postgres似乎也同意我的意见,

=# insert into product_status values (1,'S','blah blah blah');
=# copy product_status to STDOUT with csv;
1,S,blah blah blah

有什么想法吗?我在网站上发现的其他问题似乎不适用于我在这里做错的事情。

2 个答案:

答案 0 :(得分:2)

文件开头可能有一个“不可见”字符。

检查内容;如果您使用的是sume UNIX,则可以使用od -c status_table.csv

有可能文件开头有一个无用的byte order mark。只需删除它。

答案 1 :(得分:1)

我有同样的问题,我的回答与上面的相同,在文件的开头是一个无用的byte order mark。"以下是我删除它的方法。

1)在vim中打开文件

vim file_with_bom.txt

2)设置' nobomb'选项

:set nobomb

3)保存文件并退出

:wq

希望这有帮助!