Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 带行分隔符的postgres副本_Postgresql - Fatal编程技术网

Postgresql 带行分隔符的postgres副本

Postgresql 带行分隔符的postgres副本,postgresql,Postgresql,我有一个带列栏的桌子 foo --- bar 我使用Postgres的Copy命令 将select*从foo复制到带有分隔符“,”CSV头的“完整文件路径” 现在,如何传递自定义行分隔符?范例 row delimiter = _a_\n 我需要文件中的以下输出 bar_a_ somevalue_a_ somevalue_a_ somevalue_a_ 我不知道如何使用copy命令执行此操作。Postgres没有指定替代行分隔符的选项。您可以随时使用sed或您选择的语言进行后期处理,将换行符

我有一个带列栏的桌子

foo
---
bar
我使用Postgres的Copy命令 将select*从foo复制到带有分隔符“,”CSV头的“完整文件路径”

现在,如何传递自定义行分隔符?范例

row delimiter = _a_\n
我需要文件中的以下输出

bar_a_
somevalue_a_
somevalue_a_
somevalue_a_
我不知道如何使用copy命令执行此操作。

Postgres没有指定替代行分隔符的选项。您可以随时使用sed或您选择的语言进行后期处理,将换行符转换为\u a\n。或者,您可以在select中执行一些字符串连接:

COPY (select bar || '_a_' as bar from foo)
  TO 'complete_file_path'
  WITH Delimiter ',' FORMAT CSV HEADER;

我不禁想知道,为什么?如果您担心要提取的内容中会嵌入新行,那么我建议切换到文本格式,这会将任何嵌入的新行转义为两个字符\n而将任何实际的新行字符保留为明确的记录分隔符

文本的一个缺点是,您无法获得标题:-

解决这个问题的一种方法是使用头进行CSV提取,并将0限制为仅获取头,然后执行文本提取。笨重,但也是一种选择


有关文本格式的详细信息,请参阅。

谢谢您的建议。我将尝试使用sed/awk。