LoginSignup
0
1

More than 5 years have passed since last update.

PostgreSQLのデーブルを作り直した話(pg_dumpの使い方)

Last updated at Posted at 2018-02-23

そもそもなぜ作り直したか

なぜか特定レコードだけ更新が行えなくなり、原因不明の時間が続きました。
じゃあ、ダンプして作りなしちゃえばいいんじゃない?ということになり、作り直しを行うに至りました。

バックアップファイルの作成

pg_dumpを使用します。
PostgreSQLのデータをバックアップする際の手法ですね。

対象DBの確認

psql -lで、データベース名を確認します。

バックアップファイル作成

pg_dump -t table_name db_name > table_name.sqlでバックアップファイルを作成します。

こんな感じで実行しました。
pg_dump -t スキーマ.テーブル名 DB名 > 出力ファイル名.sql の形式でバックアップ作成。

作り直したいテーブルの削除

テーブルの削除については、手動で行いました。
DROP TABLE テーブル名;ですね。

テーブルの作り直し

削除が確認できたら作り直しです。
先ほど作成したバックアップファイルを流し込みます。
psql DB名 < バックアップファイル(出力ファイル名).sql
です。

簡素ですが、こんな具合にテーブルを作り直しました。

余談

特定レコードの更新が行えない場合ですが、インデックスが破損している可能性があります。
その場合は、REINDEXを用いることで解消することがあります。

少し古い記事ではありますが、こんなものもありました。
PostgreSQL:データの更新ができない

そしてこのREINDEXですが、indexの再構築を行うため、その間のSELECTはブロックされてしまいます。
サービス提供者としては手痛いことではありますので、ケースバイケースでご自身の判断で行うようにしてください。
[PostgreSQL]本当は怖いREINDEX

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1