2013-03-27 44 views
0

我用java写入并创建一个csv文件。由于某些字段中有“,”作为值的一部分,我用'“''((如”allen,jade“,”123“,”12 street“))括住每列。所以在我的CSV文件中的值的样子:处理/编辑大文件中的特殊字符(> 2GB)

“山坳值”,“列B值” ......

现在,当我试图将此文件上传到一个Postgres(9.1)使用数据库 从'filename.csv'DELIMITER','CSV; 我收到了一个错误消息:最后一次预期的列之后的额外数据。

我检查是否将其显示的错误的记录,它具有有一栏“'作为其值的一部分

确切地说这是怎么是:

”霍尔斯韦尔的众耶和华见证人基督城“,”基督城“,”哈尔斯韦尔耶和华见证人会众“

我猜这是因为第一列里的'''里面有'''这个错误。

如果我错了,请纠正我,如果你能帮我解决这个问题,那将是非常棒的。

回答

1

在创建CSV文件时,您应该先将任何已存在的引号(替换为"\")转义出来,然后再将它们包装在自己的引号中。

+0

我明白,但有什么方法可以处理现有的csv文件,而无需再次生成它,因为它是一个巨大的文件,需要很长时间才能生成。 – CCGooner 2013-03-27 05:00:33

+0

如果需要时间来生成,可能还需要很长时间来处理。此外,没有明确的方法来识别您从之前存在的报价插入的报价。例如,假设您的传记字段包含“我喜欢”“战争与和平”,“Ana Karenina”和其他托尔斯泰作品“ - 逗号周围的引号与插入的引号无法区分。 – Amadan 2013-03-27 05:03:42

+0

我正在考虑一次读取一行文件。然后将行分割为几部分,考虑','作为分隔符,然后将所有出现的'''更改为'\'',这些不是分割项的第一个和最后一个字符。它应该工作吗? – CCGooner 2013-03-27 05:09:09