PostgreSQLテーブルから特定の行をINSERTSQLスクリプトとしてエクスポートします
Export Specific Rows From Postgresql Table
解決:
エクスポートするセットを使用してテーブルを作成し、コマンドラインユーティリティpg_dumpを使用してファイルにエクスポートします。
nyummy.cimoryからselectid、name、cityとしてテーブルexport_tableを作成します。ここでcity = 'tokyo'$ pg_dump --table = export_table --data-only --column-inserts my_database> data.sql--column-insertsは、列名を持つ挿入コマンドとしてダンプします。
--data-onlyスキーマをダンプしません。
以下でコメントするように、テーブルの代わりにビューを作成すると、新しいエクスポートが必要な場合はいつでもテーブルを作成できなくなります。
のために データのみのエクスポート 使用する コピー
。
1行に1つのテーブル行を持つファイルをプレーンテキストとして取得します(INSERTコマンド)、それはより小さく、より高速です:
COPY(SELECT * FROM nyummy.cimory WHERE city = 'tokio')TO '/ path / to / file.csv'; 輸入 同じ構造の別のテーブルと同じです。
COPY other_tbl FROM '/ path / to / file.csv';COPYはファイルの書き込みと読み取りを行います サーバーに対してローカル 、のようなクライアントプログラムとは異なりpg_dumpまたはファイルを読み書きするpsql クライアントにローカル 。両方が同じマシンで実行されている場合、それはそれほど重要ではありませんが、リモート接続では問題ありません。
もありますpsqlの copyコマンド:
フロントエンド(クライアント)コピーを実行します。これはSQLを実行する操作ですCOPYコマンド。ただし、サーバーが指定されたファイルを読み書きする代わりに、psqlはファイルを読み書きし、サーバーとローカルファイルシステム間でデータをルーティングします。つまり、ファイルのアクセス可能性と特権はサーバーではなくローカルユーザーのものであり、SQLスーパーユーザー特権は必要ありません。
これは 簡単で速い する方法 pgAdminを使用してテーブルをスクリプトにエクスポートします 手動で 追加のインストールなし :
- ターゲットテーブルを右クリックして、[バックアップ]を選択します。
- バックアップを保存するファイルパスを選択します。フォーマットとして「プレーン」を選択します。
- 下部にある[ダンプオプション#2]タブを開き、[列の挿入を使用]をオンにします。
- [バックアップ]ボタンをクリックします。
- 結果のファイルをテキストリーダー(notepad ++など)で開くと、テーブル全体を作成するためのスクリプトが表示されます。そこから、生成されたINSERTステートメントをコピーするだけです。
このメソッドは、@ ClodoaldoNetoの回答に示されているようにexport_tableを作成する手法でも機能します。