PostgreSQL CSV复制:数据中发现未引用的换行符

12

我手头有一些csv数据在excel中,现在要将其导入到postgresql数据库中。我用记事本编辑器(已尝试过notepad、wordpad和notepad++)打开excel csv文件,然后将其复制/粘贴到远程桌面连接到的linux机器上。然后我在数据库中使用以下导入语句:

COPY ltg_data FROM '/home/keene/ltg_db/ltg_outbreak_jun9_15.csv' (FORMAT CSV, HEADER);

但是我收到了如下错误信息:

ERROR: 找到未引用的换行符 HINT: 使用带引号的CSV字段表示换行。 CONTEXT: COPY ltg_data, line 175320

这是我使用的csv文件链接:http://greenandtheblue.com/ltg_outbreak_jun9_15.csv
我已经进行了大量研究并尝试了很多方法,但还是缺少一些简单的东西。非常感谢任何帮助。


3
不要将内容复制/粘贴到“远程桌面”(ssh?)连接到远程计算机。相反,复制CSV文件。问题在于您的终端仿真器可能会引入换行符。 - Craig Ringer
我必须更改一些权限才能做到这一点,但我会尝试一下。 - user1610717
解决了!我只是将实际文件复制到远程机器上并运行复制语句,然后它就正常工作了。谢谢!!! - user1475191
3个回答

9
您链接的文件似乎没有CR-LF行结束符,但我怀疑这可能是一个问题,因为您来自Windows主机。您可以尝试使用sed删除回车符: sed 's/\r//' ltg_outbreak_jun9_15.csv ltg_outbreak_jun9_15-noCR.csv 然后从生成的...-noCR.csv文件中复制。

1
甚至更简单的方法是使用sed -i 's/\r//g' ltg_outbreak_jun9_15.csv命令。 - callmeGuy
1
use --quite option - mehmet
在我的 CSV 文件中,最后一列是空的,但没有引号,并且使用 CR 作为行尾,即 ,\r。我在 IntelliJ 中打开文件并将 EOL 切换为 CRLF,然后它就可以工作了。 - Sergey Ponomarev

1
您可以使用sed,如thinkmassive所说,删除回车符,但是在Linux上将结果保存到新文件中需要: touch ltg_outbreak_jun9_15-noCR.csv sed 's/\r//' ltg_outbreak_jun9_15.csv > ltg_outbreak_jun9_15-noCR.csv

-1

答案非常简单。

  • 在您的Excel文件中,数据结束的地方添加分页符。

  • 选择最后一个数据单元格后面的空单元格,然后转到

    文件 > 页面布局 > 分页符 > 插入分页符

  • 保存您的csv文件,然后使用pgadmin再次进行导入


该问题已通过不尝试通过终端仿真器复制粘贴(如上面的评论中所示)而得到解决。 - technogeek1995

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接