2016-07-04 15 views
0

多くの列を持つPostgreSQLテーブルにインポートするCSVファイルがあります。 私は、まずテーブルにこのデータをコピーし...デフォルト値でcsvからコピー

DROP TABLE IF EXISTS mylist; 
CREATE TEMP TABLE mylist (a text, b text, c text, d text, e text, f text, 
         g text, h text, i text, j text, k text, l text, 
         m text, n text, o text, p text, q text, r text, 
         s text, t text, u text, v text, w text, 
         CONSTRAINT popisp_pkey PRIMARY KEY(A)); 

COPY mylist FROM 'C:\temp\popisp1.csv' DELIMITER AS ';' CSV; 

をその後、CSVファイルをコピーした一時テーブルを作成しますが、追加の問題が表示されます。空の文字列( '')が必要なフィールドでは、Nullがコピーされているようなデータは表示されません。

ここでは空の文字列を取得する方法はありますか?テーブルセルのデータは自動的にありません。
DEFAULT ''をすべての列宣言に追加しようとしましたが、成功しませんでした。

答えて

1

ためには、必ずファイルに表示されていないことを文字列でNULLのパラメータを追加します。the documentationパー

COPY mylist FROM 'C:\temp\popisp1.csv' DELIMITER AS ';' NULL '<<>>' CSV; 

を:

NULL

は、NULL値を表す文字列を指定します。デフォルトはテキスト形式の\ N(バックスラッシュN)で、引用符のない空の文字列はCSV 形式です。 の空文字列から空文字列を区別したくない場合は、空の文字列をテキスト形式で使用することもできます。バイナリ形式を使用する場合、この オプションは使用できません。

または使用coalesce()は:

update mylist set 
    a = coalesce(a, ''), 
    b = coalesce(b, ''), 
-- ... 
    w = coalesce(w, ''); 
+0

私は自分自身であることを見つけます。しかしそれほど「自動」ではありません:) – user1697111

+0

別の提案があります; – klin

+0

ええと、私は今この初めて参照してください!それは部分的に機能します。すべてのセルが空の列は ''で埋められません。それを改善できますか? – user1697111

関連する問題