[pgsql-jp: 32892] 2重引用符でくくられた文字列を含むCSVファイルをCOPYでインポート

Dai NAKAMURA dnimail @ software.sanix.jp
2004年 5月 4日 (火) 17:03:58 JST


いつも参考にさせてもらっております。
中村と申します。

早速ですが、PostgresSQLのCOPYコマンドにて対応可能か否か
判別がつかず質問させてもらいます。

DB2 UDBにあるデータをPostgresSQLに取り込もうと考えております。
DB2からは、テキスト・デリミタ形式でデータのEXPORTが可能です。

ところが、文字列形式(CHARでもVARCHARでも)の項目に関しては
必ず、引用符(通常は")で括られた形でしかEXPORTできません。
例えばDB2上のテーブルで、

項目    変数型      実値
------+-------------+------
A      CHAR(3)        AAA
B      VARCHAR(3)     BBB
C      DECIMAL(10,2)  100.01

とあった場合、EXPORTされるレコードは、
"AAA","BBB",+00000100.01
となります(このファイルをhoge.txtとします)。
今Postgresで下記のように同様の定義を持つテーブルX

項目   変数型  
------+-------------
A      CHAR(3)
B      VARCHAR(3)
C      NUMARIC(10,2)

を作成し、
copy x from 'hoge.txt' using delimiters ',';
とすると当然ながら、文字列を括るために付与された"までインポートされ

項目   実値  
------+-------------
A      "AA
B      "BB
C      100.01

となってしまいます。
文字列のくくりを無視してPostgresにインポートしたいのですが可能で
しょうか?

VBやjavaなどでプログラムを作成してデータを移行するのは可能
ですが、件数が多い(百数十万件)のとほかにもかなりの量移行したい
テーブルがあるので、できればインポートで済ませたいと思っています。

ちなみに、くくり文字(")や区切り文字(,)は、他の文字の指定は可能
です(無指定は不可)。

環境は、
RedHat 7.3
PostgreSQL 7.1.3
です。

どうぞよろしくお願いします。






pgsql-jp メーリングリストの案内