2017-11-03 2 views
0

私はTSVファイルをPostgreSQLにインポートしようとしています。私はそうのようなTSVファイル持ってPostgresqlのCOPYコマンドを使用して、連続した一重引用符でファイルをインポートするにはどうすればよいですか?

CREATE TABLE description (
    id TEXT 
    , effective_time DATE 
    , active INT 
    , module_id TEXT 
    , concept_id TEXT 
    , language_code TEXT 
    , type_id TEXT 
    , term TEXT 
    , case_significance_id TEXT 
); 

:私は、テーブルを作成した(Gentamicin 2''-nucleotidyltransferaseを)真ん中の2つのエントリがダブルプライムのシンボルとして作用する2つの連続した単一引用符を持っていることを

id  effectiveTime active moduleId  conceptId  languageCode typeId term caseSignificanceId 
    12118017  20170731  1  900000000000207008  6708002 en  900000000000013009  Intrauterine cordocentesis  900000000000448009 
    12119013  20020131  1  900000000000207008  6709005 en  900000000000013009  Gentamicin 2''-nucleotidyltransferase 900000000000020002 
    12119013  20170731  1  900000000000207008  6709005 en  900000000000013009  Gentamicin 2''-nucleotidyltransferase 900000000000448009 
    12120019  20020131  1  900000000000207008  6710000 en  900000000000013009  Nitric oxide 900000000000020002 

注意を。

私は

psql=# \copy description FROM /path/to/foo.txt WITH DELIMITER AS E'\t'; 

を実行した場合、私はERROR: missing data for column "effective_time"を取得します。私はそれが''が列の境界の解析を台無しにしているからだと思う。

私が発見し\'\'または''''のいずれかで''インスタンスを交換し、それぞれCSV QUOTE E'\''またはCSV QUOTE ''''を、使用して試してみましたが、私は同じエラーを取得します。

ファイルを正しくインポートするには、ファイルを編集するか、\copyコマンドを変更しますか?

+1

貼り付けたサンプルデータをテキストエディタにコピーして調べました。ペーストしたものにはタブの代わりにスペースがあります。すべての区切り文字をタブで置き換えると、copyコマンドが正常に動作します。 –

+0

あなたは正しいです。ドキュメンテーションはこれがTSVであり、それは1つのように見えると示唆しましたが、決してそれを確認しませんでした。ありがとうございました。 –

答えて

0

Haleemurアリが正しく元のファイル、そのREADME「は、任意のデータベースにインポートすることができUTF-8でエンコードされたタブ区切りのフラットファイル」を含むためにそれを主張していないタブ区切り、実際に-isことを指摘しています私の編集者のせいかもしれません。一度修正すれば動作します。

関連する問題