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を使用してテーブルをスクリプトにエクスポートします 手動で 追加のインストールなし

  1. ターゲットテーブルを右クリックして、[バックアップ]を選択します。
  2. バックアップを保存するファイルパスを選択します。フォーマットとして「プレーン」を選択します。
  3. 下部にある[ダンプオプション#2]タブを開き、[列の挿入を使用]をオンにします。
  4. [バックアップ]ボタンをクリックします。
  5. 結果のファイルをテキストリーダー(notepad ++など)で開くと、テーブル全体を作成するためのスクリプトが表示されます。そこから、生成されたINSERTステートメントをコピーするだけです。

このメソッドは、@ ClodoaldoNetoの回答に示されているようにexport_tableを作成する手法でも機能します。

ターゲットテーブルを右クリックして、

宛先パスを選択し、形式を次のように変更します

タブを開く

そこからINSERTステートメントをコピーできます。