テーブルのリストをハードコードするだけで、それぞれが別のファイルに存在するようにしたい場合は、シェルスクリプトループを使用して、pg_dump
コマンドを複数回実行し、毎回テーブル名に置き換えます
for table in table1 table2 table3 etc;
do pg_dump -t $table -U userName dbName > /home/anik/psqlTest/db_dump_dir/$table.sql;
done;
EDIT:このアプローチは、psqlを通過クエリを実行し、代わりにハードコーディングされたリストのループに結果を供給することによって、動的にテーブルのリストを取得するように拡張することができます。
ループラウンド
for table in $(psql -U userName -d dbName -t -c "Select table_name From information_schema.tables Where table_type='BASE TABLE' and table_name like 'thr_%'");
do pg_dump -t $table -U userName dbName > /home/anik/psqlTest/db_dump_dir/$table.sql;
done;
ここでpsql -t -c "SQL"
はSQL
で実行され、結果はヘッダーまたはフッターなしで出力されます。列が1つしか選択されていないので、出力の各行にテーブル名があり、$(command)
でキャプチャされ、シェルは一度に1つずつループします。
なぜ90種類のファイルが必要なのか説明する必要があります - MySQLへのエクスポート、部分バックアップ?バックアップ/エクスポートを実行しようとしている場合、IMSoPの回答によって各テーブルの同じスナップショットが保証されるわけではありません。 –
@RichardHuxton良い点は、私は非原子性を考えていなかった。 DBから単一の "カスタム"バックアップを作成し、それから 'pg_restore'を使って個々のテーブルを抽出することができると思います。 – IMSoP