我的表的一列包含带有“\n”的字符串。
postgres=# select * from stringtest ;
id | inputstr
----+-----------------
1 | Name : NOC\r +
| \r +
| Detail : Detail
(1 row)
Run Code Online (Sandbox Code Playgroud)
但是当我使用 COPY TO 检索同一个表时,新行字符被转义
postgres=# COPY (select * from stringtest) TO STDOUT WITH DELIMITER E'\t' ;
1 Name : NOC\r\n\r\nDetail : Detail
Run Code Online (Sandbox Code Playgroud)
如何使 COPY TO 命令用新行替换 '\n' ?
预期输出:
postgres=# COPY (select * from stringtest) TO STDOUT WITH DELIMITER E'\t' ;
1 Name : NOC\r
\r
Detail : Detail
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标?
您可以使用 2 种文本格式:
我相信,使用第一种格式(您使用的格式),每个逻辑行也是一个物理行,这意味着无法绕过文字“\n”。但是,如果您使用 CSV 选项,则可以使用嵌入的换行符引用字符串:
test=# copy (select * from stringtest) to stdout csv;
1,"line one
linetwo"
Run Code Online (Sandbox Code Playgroud)
不是 100% 您的预期输出,但如果 CSV 适合您 - 这就能解决问题。
使用制表符分隔符:
test=# copy (select * from stringtest) to stdout csv delimiter E'\t';
1 "line one
linetwo"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12708 次 |
最近记录: |