2016-09-08 3 views
0

テーブルで更新する必要があるデータがあります。私はpgadmin3のインポートツールcsvのGUIを使用しています。 私の問題は、インポート設定を設定する方法です。postgresカンマ(列名)、インポートの問題

データ構造は、"width, inside" integerのようなカラム名ではかなり悪いですが、それほど私はatmについてはできません。

カラム名の引用符の中のコンマ(、)を無視できますか?

私が手にエラーがだから、それは私が回避しようと、私のように引用符内のカンマを解釈している

"ERROR: invalid input syntax for integer: "" 
CONTEXT: COPY mytable, line 2, column width integer, inside: "" 

です。

エクストラ: レコードの多くがそうのようなcsvファイルでちょうど空であるので、私は「」、「「」」NULLオプションで「\ N」を入れている、...

のスニペットCSVファイルやテーブル構造が

create table a (
    "Width, inside" integer, 
    "Area" character varying(50), 
    "Year" date 
) 

"width, inside", "Area", "Year" 
"3","sub","" 
+0

は –

+0

ポストに列名のCSVファイルの最初の行を二重引用符を使用します。 –

+2

あなたの問題は列名ではありません。既に引用されているようです。行の1つに、その列の空の値 '' "が入っています。これは有効な整数ではありません。 (注意: '\ N'は' text'形式のデフォルトの 'NULL'値ですが、' CSV'形式では、引用符で囲まれていない空文字列はデフォルトで 'NULL'になります;' NULL'オプションで振る舞いを変更することができます[COPYコマンドの](https://www.postgresql.org/docs/current/static/sql-copy.html)を参照してください)。 – pozs

答えて

0
create table a ("column, comma" int); 
select "column, comma" from a; 

これは例外を発生しません。

カラム名に正書法でコメントを付けるのは悪いことです。私はそれを妥当なものに改名します。

+0

ご返信ありがとうございます。テーブル構造は既に提案した形式です。しかし、それはまだそのテーブルへのCSVインポートに失敗しています。私には、輸入通訳者が列名の中で(、)を見つけてそれを分解し、引用符にもかかわらず完全な列名の一部として扱わないようです。 – geogrow

+0

あなたのcsvで 'width、inside'を' 'width、inside" 'に置き換えてください –

0

一方向は、区切り文字をから変更することです。 。テキスト/ csvファイルで手動で置き換えることができ、インポート画面で指定できます。デリミタとして(あなたのクライアントはそれを持っているはずです - その他のオプションやそれに似たタブを見てください)

また、postgresは文字列の途中で - の代わりに、 $$

との二重引用符は、このように、これはうまくいくかもしれない:

$$width, inside$$; $$Area$$; $$Year$$