OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.242756
  • 閲覧数870
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (1/2)

はじめまして。
最近からpostgreSQLを使ってデータベースを作っています。初めてのデータベース作成なので、少し手間取っていますが、宜しくお願いします。

テキストエディタを使って、タブ区切りで保存したファイルは、postgreSQLに、\copyコマンドでテーブルの中へ
流し込むことができると思いますが、テーブルを作成した際に、
CREATE TABLE ***(←テーブル名) (id SERIAL PRIMARY KEY,○○ △△,..........,);
とテーブルを作ったのですが、1列目のSERIALが邪魔をするのか、COPYコマンドを使ってもテーブル内にデータが入っていきません・・・
エラーは『": can't parse "ne 119, pg_atoi: error in "』と返ってきます。
タブ区切りテキストファイルで、一括登録する際、serial型でうまく自動発番できるファイルの書き方とかありますか?
現在、仕事でデータベースを作っているのですが、扱っているデータの数が、12万件近くあるので、全てを手動で登録するのは、ちょっとキツイです・・・
回答の方、宜しくお願いします。(質問の内容が、うまく伝わっていなかったら、ゴメンナサイ。)
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル11

ベストアンサー率 38% (114/297)

再度。

もしかして、コンソールにコピペしてinsertしようとされているんでしょうか?
それは12万件もあると非常に大変なのでは??
コンソールから流し込む場合、通信スピードに流し込むスピードがついていけない(言い方間違ってるかも)ので、そのような事態が起きるようです。
私もよくやってました。(爆)

insertで吐き出されたものを保存したテキストをサーバにあげて、テキストのあるディレクトリに移動してからDB操作が出来る状態にし、そこから「\i テキスト名」で実行できると思います。
DB操作が出来る状態じゃなくても、「psql ~」で実行できるコマンドがあったような気がするんですが、ちょっと忘れてしまいました...すみません。
お礼コメント
garam_masala

お礼率 50% (1/2)

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

ありがとうございました。
投稿日時 - 2002-04-02 09:08:50
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 38% (114/297)

こんにちは。 私はcopyコマンドはなぜかうまくいかないことが多いので、普段あまり使いません。 特にシーケンスなんか絡むと出来ないものもあったりします。 私が知らないだけ、なのかもしれませんけど。 ちょびっと手間がかかりますが...。 まずserialを持たせないtableにデータをcopyします。 そのTableからpg_dumpで「insert into~」の書式付きでデータを吐き ...続きを読む
こんにちは。

私はcopyコマンドはなぜかうまくいかないことが多いので、普段あまり使いません。
特にシーケンスなんか絡むと出来ないものもあったりします。
私が知らないだけ、なのかもしれませんけど。

ちょびっと手間がかかりますが...。
まずserialを持たせないtableにデータをcopyします。
そのTableからpg_dumpで「insert into~」の書式付きでデータを吐き出し、本来のテーブルにinsertします。

主旨が違ってたらごめんなさいね。
補足ください。
PostgresSQLはMLもありますので、そちらの過去ログ等も覗いてみてはいかがでしょうか。
補足コメント
garam_masala

お礼率 50% (1/2)

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

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ