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は、1行が1つのデータベース行に対応している必要があるという事実に由来しています。

このルールは、複数行のテキストが可能なCSV形式では緩和されていますが、引用符(デフォルトで"は:)でテキストが囲まれます。

複数行の出力が必要で、その周りに文字を囲まないようにする場合は、を使用しないでCOPY くださいSELECT

呼び出し元の実行環境としてunixシェルを想定すると、次のことができます。

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経由

また、他の応答をコピーするのではなく、こちらを参照してください: Stringliteral and escape characters in postgresql

于 2012-12-18T01:55:43.363 に答える