2011-09-11 37 views
8

タブ区切りのファイルをPostgreSQLデータベースにインポートしようとしています。ファイル内のフィールドの1つに「タイトル」フィールドがあり、時には実際の引用符が含まれています。私は私のデータベースにファイルをインポートしようとするとCSVファイルをPostgreSQLにインポートする際に引用符を無視しますか?

id title 
5  Hello/Bleah" Foo 

(うん、ただ1つの引用符は、タイトルにあります。)

を:たとえば、私のTSVは、次のようになります

copy articles from 'articles.tsv' with delimiter E'\t' csv header; 
を私はこの問題を解決するにはどうすればよい

ERROR: unterminated CSV quoted field 

私はそのラインを参照し、このエラーを取得しますか?引用符は、ファイル内のフィールド全体を囲むことはありません。私はcopy articles from 'articles.tsv' with delimiter E'\t' escape E'\\' csv header;しようとしましたが、私は同じ行に同じエラーが発生します。ファイルを想定し

答えて

4

copy separatedの既定の形式は、タブ区切りです。 CSVとして扱うのはちょっとばかりです。 (あなただけのヘッダーをスキップし、このパスを取るのですか?)

copy articles from 'articles.tsv'; 

正確に何をしたいん。

+2

十分に簡単ですが、CSVデータに有効なフィールドコンテンツとしてバックスラッシュが含まれている場合はどうなりますか? (はい、私はこれに遭遇しました)COPYのデフォルトのフォーマットは、バックスラッシュをエスケープ文字として扱います。したがって、あなたはCSV形式でCOPYを使用しなければなりません。 –

+0

私はそのことについて考えていませんでした。はい:意味があります。 – wildplasser

6

決して実際にそのフィールドを引用しよう:あなたが欲しい

オプションは、「引用付き」で、残念ながらhttp://www.postgresql.org/docs/8.2/static/sql-copy.html

を参照してください、私は完全に引用処理をオフにするかどうかはわかりません、 1つのkludgeはあなたのファイルにまったく現れない文字を指定することです。

+10

ありがとう!私は無作為に 'quote E '\ b''を試しましたが、これで作業が終了しました。 – grautur

+0

@grautur E '\ b'はどういう意味ですか?バックスペース? 「E」はどうですか? "エスケープ文字列定数" - それを得ました。 –

関連する問題