【问题标题】:Export text field with newlines导出带有换行符的文本字段
【发布时间】:2021-07-21 15:51:55
【问题描述】:

我的 PostgreSQL 数据库中有一个包含换行符的文本字段。我想将该字段逐字导出到文本文件中。但是,如果没有将换行符编码为\n,我不知道如何导出该字段。

目前我只是使用\copy 并在文本编辑器中手动对\n 进行搜索和替换。

【问题讨论】:

  • 文本文件怎么写?
  • 您不能逐字导出字段。目前是PostgreSQL的内部格式,一旦导出就不会了,所以有些变化是不可避免的。否则,您根本就不需要导出,而是需要 PostgreSQL 数据目录的副本。试着描述你想要什么,而不是你不想要什么。
  • @jjanes,文本字段包含一个 XML 文档,我想在本地 IDE 中打开它。因此,我想将该 XML 文档从数据库中取出并放入我计算机上的文本文件中。我所说的“逐字”只是指没有转义换行符或引号之类的东西。

标签: postgresql psql


【解决方案1】:

COPY 的第一项工作是生成可以准确重新加载的输出。但听起来您想要相反的结果,您想要生成输出,而您无法通过查看这些行最初是如何分组到记录中来知道的。

因此,您很可能需要进行某种后期处理。您可以使用文本输出格式并将 \n 更改为文字换行符,或者您可以使用 csv 输出格式然后删除引号。在这两种情况下,可能还有其他必须处理的转义/引用的特殊字符。

另一种方法是在 COPY 之前而不是之后分解数据:

\COPY (select unnest(string_to_array(col1,E'\n')) from foo) TO ... 

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    相关资源
    最近更新 更多