2016-04-04 16 views
1

パイプで区切られた一連のファイルをPgAdmin III(PostgreSQL 9.5 DBを利用)にインポートしようとしています。PostgreSQLでパイプ文字( '|')をエスケープする方法

私はエラーを取得してしまった:

ERROR: extra data after last expected column 
SQL state: 22P04 

基本的にラインが17そこにあったはず25個の列を持っていた...なぜ?さて、私はいくつかのフィールドにパイプ( "|")文字があることを理解しました。

私はインポートするには、次のコマンドを使用しています:

START TRANSACTION; 
copy drugs FROM 'path/to/source_file.rrf' (DELIMITER '|', FORMAT TEXT); 
COMMIT; 

私はそれが間違ってやっているかもしれないが、私は、字句構造documentationに言及されていた...

私はすでにましたフィールドのパイプ文字を '/ |'で置き換えようとしました。と '// |'、しかし、これまでのところ、両方とも上記と同じエラーメッセージが表示されます。

ありがとうございます。詳細が必要な場合はお知らせください。

+1

で詳細を見つけることができますか? –

+0

これは例示的なフィールドである:「VX-703は、p38MAPキナーゼ阻害剤がLPS刺激TNFα、IL-6およびIL-1βを効果的に阻害する抗サイトカイン療法である。 – user3684314

答えて

1

区切り文字をフィールドデータの一部として使用するには、列全体の値を引用する必要があります。たとえば:

filed_one|field_two|with_a_delimiter_inside|field_three 

filed_one|"field_two|with_a_delimiter_inside"|field_three 

または

"filed_one"|"field_two|with_a_delimiter_inside"|"field_three" 

その他のオプションに変換する必要がある区切り文字をエスケープするバックスラッシュを使用することです。例:

filed_one|field_two\|with_a_delimiter_inside|field_three 

あなたは私たちに「悪い」データのいくつかの例を示すことができmanual on COPY command

+0

あなたの最後の答えは、1つの "\"が追加されています。私は、私のPythonコードが誤って "|" 2回、それを "\ |"それは "\\ |"となっていました。どうもありがとう! – user3684314

関連する問題