postgresフロントエンドでタブを指定する方法COPY


83

psqlの「\ copy」コマンドを使用して、タブ区切りファイルからPostgresにデータをプルしたいと思います。私はこのコマンドを使用しています:

\copy cm_state from 'state.data' with delimiter '\t' null as ;

しかし、私はこの警告を受け取ります(テーブルは実際に正常にロードされます):

WARNING:  nonstandard use of escape in a string literal
LINE 1: COPY cm_state FROM STDIN DELIMITER '\t' NULL AS ';'
HINT:  Use the escape string syntax for escapes, e.g., E'\r\n'.

'\ t'が正しくない場合、タブを指定するにはどうすればよいですか?


14
:エラーメッセージが示唆するもの試してみてください\copy cm_state from 'state.data' with delimiter E'\t' null as ';'
フランク・ファーマー

はい、その通りです。エラーメッセージの先頭に「E」が表示されませんでした。どうもありがとう!
Chris Curvey

2
Eはエスケープシーケンスを開始します。Eは、Cで二重引用符で囲まれた文字列と同じように考えてください。E '\ t' == "\ t"。
ショーン

回答:


182

E'\t'postgresqlにエスケープ文字が含まれている可能性があることを伝えるために使用します。

\copy cm_state from 'state.data' with delimiter E'\t' null as ;

16
ありがとう!これはまたCOPY delimiter must be a single one-byte character、私にとってあまり有益でないエラーを解決しました。ここに追加して、検索エンジンがそれを取得できるようにします。
Denis Drescher 2015年

これは、エラーメッセージ付きの別の回答になるはずです。検索エンジンがそれを拾うために:)
RK Kuppala 2016

5

あなたはこれを行うことができます copy cm_state from stdin with (format 'text')


1
テキストファイルのデフォルトの区切り文字はタブです..私はこれを使用しているし、それは...働くpostgresql.org/docs/9.2/static/sql-copy.html
user4372693

1
これは、コマンドをシェルスクリプトに入れたい場合に役立ちます$$\t$$。奇妙なことに、機能していないようです。
オテウス2017

これは、pg_dump他のオプションを指定せずに生成されたデータに対して機能します。
GuiRitter
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.