[pgsql-jp: 35716] CSVファイルからのCOPY、INSERTについて

takada takada @ cyberstar.co.jp
2005年 7月 8日 (金) 21:55:33 JST


高田と申します。

CSVファイルをアップロードして、PHPスクリプト内でファイル内容をデータベースに
登録しようと考えています。
CSVファイルの各行には約150の項目がカンマ区切りで入っているので、まず「CREATE
TABLE」を実行し150列のテンポラリーテーブルを作成し、

COPY tmp FROM '$_FILE[fileame][tmp_name]' USING DELIMITERS ','

でファイル内容をインサート、その後

INSERT INTO table (culumn1, culumn2, culumn3) SELECT tmp1,tmp2,tmp3 FROM tmp

で必要なデータをテーブルに挿入していくという方法をとりました。

しかし、CSVファイル側の一部に
"12,000円の・・・"
のように文字列中にカンマが入っているものがあり、この部分が「COPY」の際にエ
ラーとなってしまいます。できれば「"・・・"」のようなダブルクォーテーションも
取り払った状態で挿入したいのですが、いい方法はございませんでしょうか。

PHP側でアップロードされたCSVファイルの各行を読んでいき、適切な形にフォーマッ
トしてから挿入していけばいいのですが、データが数千行におよぶため、非常に処理
が重たくなってしまうため断念しました。
他にもいい方法がございましたらご教授お願いいたします。

Postgres Version 7.2.2
PHP Version 4.3




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