3

当我尝试导出字段的文本内容并且该内容具有回车字符时,该字符将像 \N 字符串一样输出。

例如:

create table foo ( txt text );
insert into foo ( txt ) values ( 'first line
second line
...
and other lines');
copy foo ( txt ) to '/tmp/foo.txt';

我想返回以下(a):

first line
second line
...
and other lines

但是,输出是(b):

first line\Nsecond line\N...\Nand other lines

有人知道如何获得(a)输出吗?

4

2 回答 2

5

\N是因为一行必须对应于一个数据库行。

对于 CSV 格式,此规则放宽了,其中多行文本是可能的,但引号字符(默认情况下":)将包含文本。

如果你想要多行输出并且周围没有封闭字符,你不应该使用COPY but SELECT

假设一个 unix shell 作为调用者的执行环境,你可以这样做:

psql -A -t -d dbname -c 'select txt from foo' >/tmp/file.txt
于 2012-12-18T02:26:45.270 回答
0

你有没有试过:\r\n

这是另一个可能有效的解决方案:

E'This is the first part \\n And this is the second'

通过https://stackoverflow.com/a/938/1085891

另外,不要复制其他响应,请参见此处:Postgresql 中的字符串文字和转义字符

于 2012-12-18T01:55:43.363 回答