从CSV导入PSQL添加其他字符

时间:2018-02-21 05:32:31

标签: postgresql csv psql

我有一个CSV文件,我在其中导入了许多字段...其中一个字段是日期类型字段,格式为'20120401'。在CSV文件中,所有行的此字段的长度为8.我在Postgres中创建了一个表,并指定该字段以将此数据作为DATE类型列接收。当我导入CSV文件时,它引发了“无效的输入错误”。为解决这个问题,我将表的类型更改为VARCHAR,以为我可以运行ALTER TABLE来更改数据类型。导入成功,但ALTER TABLE没有。我注意到第一行的日期长度为9,而所有剩余行的标准值为8。不知何故,在导入中它获得了另一个角色,对于我的生活,我无法确定它来自何处。我做了一堆TRIM操作(TRIM,BTRIM),但仍然可以产生9个字符。有什么建议?如果我删除这一行,ALTER TABLE语句将其更改为DATE类型。所以它真的只有这一行。

以下示例:

20150401    My  Gll ES  1A3AE039E352    GCE 0.2461158

20150401    My  Gll ES  1F63E45849F1    GCE 0.8670354

1 个答案:

答案 0 :(得分:3)

凝视我的水晶球,我发现文件开头是byte order mark(BOM)。

这将是UNICODE字符U + FEFF,在UTF-8中它将是EF BB BF。

虽然字节顺序标记在UTF16编码中用于确定 endianness ,但它们在UTF-8中无用,但某些操作系统将它们用作表示“此文件为UTF-8的标记” ”

你必须删除该角色。