• ベストアンサー

csvデータをPostgreSQLにインポート

RedHat8.0にpostgresql-7.2.3.tar.gzをインストールしています。database_6に接続し、 database_6=# COPY tablename FROM '/var/test/testdata.csv' WITH CSV; を実行すると(tablenameとtestdataとは同一名にしてあります)、 ERROR: parser: parse error at or near "csv" と表示されてしまいます。どこが悪いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

7.x の PostgreSQL では COPY コマンドが WITH CSV をサポートしていないようです。 http://www.postgresql.org/docs/7.2/static/sql-copy.html http://www.postgresql.org/docs/7.4/static/sql-copy.html には WITH CSV がありません。 http://www.postgresql.org/docs/8.0/static/sql-copy.html http://www.postgresql.org/docs/8.4/static/sql-copy.html には WITH CSV があります。 できるだけ安定した新しいバージョンの postgresql-8.x を利用するのが望ましいのですが、 何か理由があって 7.2.3 を使うのであれば、COPY コマンドではない方法を探す必要があります。

Feruza
質問者

お礼

ご回答ありがとうございます。 最初、書籍の内容に基づいて(Yumで)インストールしようとしたところ、いつの間にか(ダブルクリックで)pgdg-redhat-8.0-5.noarch.rpmがインストールされてしまい、エンコーディングがASCIIで初期化されてしまっていましたため、アンインストールしまいた。しかしながら、その後、既にインストールされているというエラーメッセージが出て、再インストールができなくなりました。そこで、別の書籍 書籍の内容に基づいて、postgresql-7.2.3.tar.gz(付録)をインストールしたという経緯があります。こちらはUTF8に対応していないようで、EUC_JPになっていますが、EUC_JPのファイルがなぜか文字化けもします。RedHat8.0からCentOS5へ移行をする際(検討中)、あるいは、どこかで、postgresql-8.x.tar.gzをダウンロードできれば、postgresql-8.xを試してみます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

testdata.csvをインポートしたいならその後の「/」は不要でしょう。

Feruza
質問者

お礼

ご回答ありがとうございます。 testdata.csvの後には「/」は付けていません。 参考にしていた書籍にデータベースにテーブルを作成することが記載されていませんでした。しかしながら、テーブルを作成しても同じ結果です。インポートしようとしているファイルには、ラベルを付けていません(Windows版でインポートした際、不要であったため)。スキーマや主キーを作成していないと、問題はあるでしょうか?

Feruza
質問者

補足

postgresql-7.2.3.tar.gzをインストールする際、UTF8を設定できず、EUC_JPになってしまいました。TeraPadでは文字コード指定再読込がEUC(E)しかないため、不安でしたが、RedHat8.0のTerminalで開いてみると、日本語表示に関しては問題なさそうです。ただし、アクセント文字は文字化けしてしまっています。