【问题标题】:postgresql csv copy unquoted newline found in datapostgresql csv复制数据中未引用的换行符
【发布时间】:2015-06-19 21:16:23
【问题描述】:

我在 excel 中有一些 csv 数据,我正在将其导入到 postgresql 中。我正在使用记事本编辑器(尝试过记事本、写字板和记事本++)打开 excel csv 文件,然后将其复制/粘贴到远程桌面连接到 linux 机器。然后我在数据库中使用这个导入语句: 复制 ltg_data FROM '/home/keene/ltg_db/ltg_outbreak_jun9_15.csv' (格式 CSV, HEADER);

我收到此错误: 错误:在数据中发现未引用的换行符 提示:使用带引号的 CSV 字段来表示换行符。 上下文:复制 ltg_data,第 175320 行

这是我正在使用的 csv 文件的链接:http://greenandtheblue.com/ltg_outbreak_jun9_15.csv
我已经对这个问题进行了很多研究并尝试了很多东西,但一定缺少一些相当简单的东西。很感谢任何形式的帮助。

【问题讨论】:

  • 不要复制/粘贴到“远程桌面?(ssh?)连接到远程机器。复制 CSV 文件。问题是您的终端模拟器可能引入了换行符。
  • 我必须更改一些权限才能做到这一点,但我会试一试。
  • 解决了!我只是将实际文件复制到远程计算机并运行复制语句,它工作正常。谢谢!!!!

标签: postgresql csv postgresql-copy


【解决方案1】:

您链接的文件似乎没有 CR-LF 行结尾,但是我怀疑这可能是一个问题,因为您来自 Windows 主机。您可以尝试使用sed 删除回车:

sed 's/\r//' ltg_outbreak_jun9_15.csv ltg_outbreak_jun9_15-noCR.csv

然后从生成的 ...-noCR.csv 文件中复制。

【讨论】:

  • 或者更简单的 sed -i 's/\r//g' ltg_outbreak_jun9_15.csv
  • 使用--quite选项
【解决方案2】:

您可以使用sed 删除回车符,正如 thinkmassive 所说,但要将结果保存到 Linux 上的新文件中,您需要:

touch ltg_outbreak_jun9_15-noCR.csv

sed 's/\r//' ltg_outbreak_jun9_15.csv > ltg_outbreak_jun9_15-noCR.csv

【讨论】:

    【解决方案3】:

    答案很简单。

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

    • 在最后一个数据单元格之后选择下一个单元格(空单元格)并转到

      File > Page Layout > Breaks > Insert Page Break.

    • 使用pgadmin 再次保存您的csv fileimport

    【讨论】:

    • 通过不尝试通过终端模拟器复制和粘贴解决了该问题(如上面在 cmets 中看到的)
    猜你喜欢
    • 2015-05-20
    • 2018-09-04
    • 2022-01-20
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多