1. ホーム
  2. database

[解決済み] Postgres: bash スクリプトから再作成/再投入する前にデータベース全体をクリアする。

2022-04-22 22:32:14

質問

シェルスクリプト(cronjobになる予定)を書いているのですが、どうすればいいですか?

1: 本番用データベースをダンプする

2: ダンプを開発用データベースにインポートする

ステップ1と2の間に、開発用データベースをクリアする必要があります(すべてのテーブルを削除しますか)。これはシェルスクリプトからどのように行うのがベストでしょうか?今のところ、以下のような感じです。

#!/bin/bash
time=`date '+%Y'-'%m'-'%d'`
# 1. export(dump) the current production database
pg_dump -U production_db_name > /backup/dir/backup-${time}.sql

# missing step: drop all tables from development database so it can be re-populated

# 2. load the backup into the development database
psql -U development_db_name < backup/dir/backup-${time}.sql

解決方法は?

データベースを一旦削除して、再作成すればいいんだよ。UNIXやLinuxのシステムであれば、それで済むはずです。

$ dropdb development_db_name
$ createdb development_db_name

実は私もそうしているんです。