我正在尝试将一个大约4.5GB的CSV文件导入到Postgres中,但它一直抛出以下错误:
ERROR: 未在数据中找到引号括起来的回车符
HINT: 使用带引号的CSV字段来表示回车符。
CONTEXT: COPY abc_complete_file_261115, line 9041959
我在SublimeText2中打开了我的CSV文件,并跳转到行9041959,在那里找到了我需要的记录的URN,然后在Vim中加载了该文件并跳转到该行。我在Vim中启用了隐藏字符(使用:set list),因此我希望能够在数据行中看到一个回车符^M,但是我只能在行末找到预期的一个。
经过整整一天的研究,我没有更进一步,最后删除了第9041959行的记录 - 这并没有解决问题。然后我想也许是记录之间发生了奇怪的情况,所以我删除了错位的5条记录,但是它再次给出了相同的错误。(我现在只是想导入文件,以便在Postgres中查看数据,稍后再考虑数据保留问题)。我确保在重新运行查询之前已保存了对CSV文件的更改,但它仍然给出相同的错误。
我感觉自己可能漏掉了非常非常显而易见的东西 - 有人有什么想法可能是什么原因导致了这个问题吗?
我正在使用运行El Capitan的Mac。
我在SublimeText2中打开了我的CSV文件,并跳转到行9041959,在那里找到了我需要的记录的URN,然后在Vim中加载了该文件并跳转到该行。我在Vim中启用了隐藏字符(使用:set list),因此我希望能够在数据行中看到一个回车符^M,但是我只能在行末找到预期的一个。
经过整整一天的研究,我没有更进一步,最后删除了第9041959行的记录 - 这并没有解决问题。然后我想也许是记录之间发生了奇怪的情况,所以我删除了错位的5条记录,但是它再次给出了相同的错误。(我现在只是想导入文件,以便在Postgres中查看数据,稍后再考虑数据保留问题)。我确保在重新运行查询之前已保存了对CSV文件的更改,但它仍然给出相同的错误。
我感觉自己可能漏掉了非常非常显而易见的东西 - 有人有什么想法可能是什么原因导致了这个问题吗?
我正在使用运行El Capitan的Mac。
CREATE TABLE large_file_test(
urn VARCHAR,
forename CHAR(32),
surname CHAR(32));
COPY large_file_test FROM '/Users/Shared/largefile1.csv' (FORMAT CSV, DELIMITER ',', HEADER, ENCODING LATIN1);
COPY large_file_test FROM '/Users/Shared/largefile2.csv' (FORMAT CSV, DELIMITER ',', HEADER, ENCODING LATIN1);
COPY large_file_test FROM '/Users/Shared/largefile3.csv' (FORMAT CSV, DELIMITER ',', HEADER, ENCODING LATIN1);
ALTER TABLE large_file_test
ADD CONSTRAINT large_urn
PRIMARY KEY (large_urn);
ANALYZE large_file_test;
我正在尝试将三个不同的文件加载到我创建的表中。问题在于第一部分似乎有一些隐藏字符,导致无法将其导入到Postgres中。我还没有尝试过第二部分或第三部分。
LATIN1
编码而不是一些多字节编码吗? - user330315(FORMAT CSV,DELIMITER',',HEADER);
,它给了我以下错误ERROR:invalid byte sequence for encoding "UTF8":0xd82b SQL state:22021 Context:COPY 123_complete_file_261115,line 18982
。我真的没有办法找出它是如何编码的 - 有没有办法确定使用了什么编码?非常感谢。 - mmTmmRvalue-for-urn,value-for-forename
。由于第三个字段缺失,拷贝操作将推断第二个字段继续到下一行,这在CSV规则中是合法的,但仅当该字段用双引号括起来时才有效。 - Daniel Vérité