遅刻の「言い訳」選手権

PostgreSQL 8.1.4を使用しています。
仕様の変更によりテーブルへフィールドの追加を行なったのですが、このフィールドの位置を変更する事はできるのでしょうか。

DDL文を整えて作った空のテーブルへデータをリストアしようとしましたがうまくできませんでした。

よろしくお願いします。

A 回答 (2件)

ALTER文でカラムの位置を変更することはできません。



どうしてもカラムの位置を変える必要がある場合、(多くの場合、SELECT文等でデータを抽出する時に順番を整えれば良いと思いますが・・・)ANo.1の方がおっしゃるように一度、テーブル内のデータをバックアップして、テーブルを作り直し、再度データを入れる必要があると思います。

> SQL形式でカラム名指定するモードでバックアップ
おそらくpg_dump -D [table_name]の大文字Dオプションのことだと思います。
カラム名まで保持したINSERT文を生成するので、テーブルの順序が変更された場合に対応できます。

参考URL:http://www.postgresql.jp/document/pg826doc/html/ …
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。

カラムの位置を変える必要があるのか、は私も少々疑問です。変更後のDB定義書を見たら項目の最後ではなく途中に追加されていたので、その様に作らなきゃいけないのかなと思ったのですが・・・定義書の方を変えてもらえば良かったかも知れませんね。

フィールドを項目の最後に追加したまま本当は知らんぷりしようかとも思っていたんですが、insert文を書く時に他の人がフィールドを指定せずに実行したら不味いかなと思い、結局無理矢理押し込めました。

大文字Dオプション、なるほどです。今度やってみます。
ありがとうございました。

お礼日時:2008/02/13 00:18

何にひっかかっているかわかりませんが。


SQL形式でカラム名指定するモードでバックアップし
テーブル登録して
データonlyモードで登録すれば可能かと重います

この回答への補足

素早いご回答ありがとうございます。返信が遅くなって申し訳ありません。

おっしゃる通りデータonlyモードでリストアしようとしていたのですが、関連付けがおかしいと言う様なエラーで弾かれてしまうのです。

戻そうとしているデータがおかしいのかなとも思い色々とオプションを付けて吐いてみましたが変わりありませんでした。

回答の「SQL形式でカラム名指定するモードでバックアップ」というのが分からず調べてみたのですが見当たりませんでした。これはどういう操作になるのでしょうか。

再度お答えいただけたら幸いです。

補足日時:2008/01/30 18:54
    • good
    • 0
この回答へのお礼

レスの早さに感動しつつもなかなか試すことができませんでした。。

焦った挙げ句、そのテーブルをcsvでデータを吐いて、エクセルでフィールドを並べ替えて、整えた空テーブルにそのcsvを取り込んで・・・というぜんぜんスマートじゃない手段でやりすごしました。

時間を作って今度は教えていただいたやり方をもう一度やってみたいと思いますので、また何かあったら宜しくお願いします。

どうもありがとうございました。

お礼日時:2008/02/13 00:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報