• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:postgreSQLのCOPY コマンド&serial型について。)

postgreSQLのCOPY コマンド&serial型について

このQ&Aのポイント
  • postgreSQLのCOPYコマンドを使用して、タブ区切りで保存したファイルをテーブルに流し込む方法について説明します
  • テーブルを作成する際に、SERIAL型を使用する場合、COPYコマンドでデータを一括登録する際にエラーが発生することがあります
  • 12万件近くのデータを手動で登録するのは困難な場合、自動発番が必要なファイルの書き方についても解説します

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

  • ベストアンサー
  • noopee
  • ベストアンサー率38% (114/297)
回答No.2

再度。 もしかして、コンソールにコピペしてinsertしようとされているんでしょうか? それは12万件もあると非常に大変なのでは?? コンソールから流し込む場合、通信スピードに流し込むスピードがついていけない(言い方間違ってるかも)ので、そのような事態が起きるようです。 私もよくやってました。(爆) insertで吐き出されたものを保存したテキストをサーバにあげて、テキストのあるディレクトリに移動してからDB操作が出来る状態にし、そこから「\i テキスト名」で実行できると思います。 DB操作が出来る状態じゃなくても、「psql ~」で実行できるコマンドがあったような気がするんですが、ちょっと忘れてしまいました...すみません。

garam_masala
質問者

お礼

noopeeさん、無事に成功しました。 本当にありがとうございました。 これから、もっともっと勉強して、noopeeさんのように 人のお役に立てるようになりたいです。 ありがとうございました。

その他の回答 (1)

  • noopee
  • ベストアンサー率38% (114/297)
回答No.1

こんにちは。 私はcopyコマンドはなぜかうまくいかないことが多いので、普段あまり使いません。 特にシーケンスなんか絡むと出来ないものもあったりします。 私が知らないだけ、なのかもしれませんけど。 ちょびっと手間がかかりますが...。 まずserialを持たせないtableにデータをcopyします。 そのTableからpg_dumpで「insert into~」の書式付きでデータを吐き出し、本来のテーブルにinsertします。 主旨が違ってたらごめんなさいね。 補足ください。 PostgresSQLはMLもありますので、そちらの過去ログ等も覗いてみてはいかがでしょうか。

参考URL:
http://www.sra.co.jp/people/t-ishii/PostgreSQL/
garam_masala
質問者

補足

noopeeさん、とても分かりやすい回答ありがとうございました。 早速pg_dumpを使ってみました。 「insert into ...」文で、書き出すことには、成功したのですが、本来のテーブルにinsertしようとするときに(エディタ上の「insert into...」文を、コピー&ペーストをしているのですが)、最初の数行は、うまくinsertしてくれますが、10行以上の行を一度にペーストしようとすると、特に返ってくるエラーはないのですが、ペーストもされていません・・・ その状態になると、\qも、select文も(一切のコマンドが)使えなくなって(反応しなくなって)しまいます。 5行づつくらいだと、ペーストはできるのですが、本来、コピー&ペーストをしてもいいものなのでしょうか? それとも、私のやり方が間違っているのでしょうか? 非常に分かりにくい質問かと思いますが、宜しくお願いします。