【发布时间】:2022-06-13 23:04:52
【问题描述】:
Postgres 数据库中有一个包含新行的文本字段。我想将该字段的内容导出到文本文件,保留这些新行。但是,COPY TO 命令明确地将这些字符转换为\n 字符串。例如:
$ psql -d postgres -c "COPY (SELECT CHR(10)) TO '/tmp/out.txt';"
COPY 1
$ cat /tmp/out.txt
\n
这种行为似乎与documents 中的简短描述相匹配:
目前,COPY TO 永远不会发出八进制或十六进制数字反斜杠序列,但它会使用上面列出的其他序列来处理这些控制字符。
是否有任何解决方法可以在输出中获取新行?例如。像这样的命令:
$ psql -d postgres -c "COPY (SELECT 'A line' || CHR(10) || 'Another line') TO '/tmp/out.txt';"
结果如下:
A line
Another line
更新:我不希望获取 CSV 文件。输出不得包含标题、列分隔符或列修饰符,例如引号(正如上面输出中的示例)。 a different question 和 COPY AS CSV 中提供的答案不满足此要求。
【问题讨论】:
-
我认为您正在寻找的是
WITH CSV: " CSV 格式将识别并生成带有包含嵌入式回车和换行符的引用值的 CSV 文件。因此,这些文件并不是严格意义上的每行类似于文本格式文件的表格行。”
标签: postgresql psql