0

我从一个 java 程序执行了一个写操作,以创建一个 csv 文件,该文件具有以下字段:

《123》、《大陆》、《你好,男孩》、《我喜欢《战争与和平》》、......

现在,当我尝试使用 COPY tablea from 'filename.csv' DELIMITER ',' CSV 将此文件上传到 postgres (9.1) 数据库时;我收到一条错误消息:最后一个预期列之后的额外数据。

我相信这是因为我收到此错误的第 4 列值中的 '"'。

我还发现,只需在 excel 中打开文件并再次保存,为提示选择“是”:“filename.csv 可能包含与 csv 不兼容的功能,是否要保留此格式”进行所有必要的更改.

就像在单击“是”后,如果我从同一个文件(由 excel 新格式化)中读取 java,列看起来像:

123、大陆,《你好,男孩》,《我喜欢》《战争与和平》《》

这个新文件(保存后)也成功上传。我在一个小文件上试过这个。但我的原始文件有 250 万条记录(>2.5gb),excel 就是无法打开它。您对excel如何保存它有任何想法吗?这样我就可以手动将更改应用于我的文件。

谢谢

4

1 回答 1

0

您是否看到 Excel 如何将字段内的所有单个 " 更改为 "" (doeble ")?我想这就是答案。Excel 还从不包含空格、逗号或嵌入的字段周围删除了“”,但我认为这没有什么不同。所以尝试用“”替换所有不在字段边界上的“,看看是否有效。

如果任何字段中都没有嵌入“,”序列,那么您可以简单地将所有“”替换为“”,然后将所有“”,”替换为“,”,但是如果有任何“,”当然这不起作用字段内的序列。问题是,如果字段中嵌入了任何“,”,那么任何人都将如何知道它是否是字段分隔符?

于 2013-03-27T07:15:39.083 回答