質問 |
||
| QNo.3709114 | フィールドの入れ替えはできますか? | |
|---|---|---|
| 質問者:hitya |
PostgreSQL 8.1.4を使用しています。 仕様の変更によりテーブルへフィールドの追加を行なったのですが、このフィールドの位置を変更する事はできるのでしょうか。 DDL文を整えて作った空のテーブルへデータをリストアしようとしましたがうまくできませんでした。 よろしくお願いします。 |
|
困り度:
|
||
| 質問投稿日時: 08/01/24 13:17 |
||
回答良回答20pt |
|
| ANo.2 | ALTER文でカラムの位置を変更することはできません。 どうしてもカラムの位置を変える必要がある場合、(多くの場合、SELECT文等でデータを抽出する時に順番を整えれば良いと思いますが・・・)ANo.1の方がおっしゃるように一度、テーブル内のデータをバックアップして、テーブルを作り直し、再度データを入れる必要があると思います。 > SQL形式でカラム名指定するモードでバックアップ おそらくpg_dump -D [table_name]の大文字Dオプションのことだと思います。 カラム名まで保持したINSERT文を生成するので、テーブルの順序が変更された場合に対応できます。 |
|---|---|
| 回答者:tecinfo | |
| 種類:回答 どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/02/12 12:38 |
|
| |
| 参考URL: | http://www.postgresql.jp/document/pg826doc/html/app-pgdump.html |
| この回答へのお礼 | ご丁寧にありがとうございます。 カラムの位置を変える必要があるのか、は私も少々疑問です。変更後のDB定義書を見たら項目の最後ではなく途中に追加されていたので、その様に作らなきゃいけないのかなと思ったのですが・・・定義書の方を変えてもらえば良かったかも知れませんね。 フィールドを項目の最後に追加したまま本当は知らんぷりしようかとも思っていたんですが、insert文を書く時に他の人がフィールドを指定せずに実行したら不味いかなと思い、結局無理矢理押し込めました。 大文字Dオプション、なるほどです。今度やってみます。 ありがとうございました。 |
回答良回答10pt |
|
| ANo.1 | 何にひっかかっているかわかりませんが。 SQL形式でカラム名指定するモードでバックアップし テーブル登録して データonlyモードで登録すれば可能かと重います |
|---|---|
| 回答者:alte_6 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/01/24 15:33 |
|
| |
| この回答への補足 | 素早いご回答ありがとうございます。返信が遅くなって申し訳ありません。 おっしゃる通りデータonlyモードでリストアしようとしていたのですが、関連付けがおかしいと言う様なエラーで弾かれてしまうのです。 戻そうとしているデータがおかしいのかなとも思い色々とオプションを付けて吐いてみましたが変わりありませんでした。 回答の「SQL形式でカラム名指定するモードでバックアップ」というのが分からず調べてみたのですが見当たりませんでした。これはどういう操作になるのでしょうか。 再度お答えいただけたら幸いです。 |
| この回答へのお礼 | レスの早さに感動しつつもなかなか試すことができませんでした。。 焦った挙げ句、そのテーブルをcsvでデータを吐いて、エクセルでフィールドを並べ替えて、整えた空テーブルにそのcsvを取り込んで・・・というぜんぜんスマートじゃない手段でやりすごしました。 時間を作って今度は教えていただいたやり方をもう一度やってみたいと思いますので、また何かあったら宜しくお願いします。 どうもありがとうございました。 |