複数のSQLファイルを含むマスターファイルを実行できるPostgres管理GUIはありますか


8

本当に長いスクリプトを開発しています。スクリプトをより小さく管理しやすいスクリプトに分割し、各sqlファイルをマスターファイルに含めてから、マスターファイルを実行します。

例: master.sql

内容(使用する構文がわかりません):

file1.sql
file2.sql
file3.sql

psql -fコマンドラインでの使用および\iこれらのファイルのインクルードに関するいくつかのチュートリアルを見つけましたが、ここでは、端末を避け、GUIを使用してデータベースを管理し、master.sqlスクリプトを実行することをお勧めします。

これはどのpostgres管理GUIでも可能ですか?おそらくそれはpgAdminにはありません


任意のエディターでSQLファイルを編集でき(pgAdminよりも優れたオプションがあります)、psqlで単一のコマンドのみを実行できます(たとえばpsql -f master.sql)。
dezso 2013年

OK、それから私は明確になります:おそらくpgAdminではそれを行うことができません。とにかく、なぜこれが問題であるのか本当にわかりません(この制限に慣れすぎているかもしれません)。
dezso

コメントをありがとう。そして、pgAdminで私がやりたいことを行おうとする、それ解決策なしで問題であることわかります。あなたが言うように、それはpgAdminの制限(WADU)である可能性があるため、質問を編集して、これを実行するすべての postgres GUI を要求するまで開きます。
jbits 2013年

1
SQL Workbench / Jはそれを行うことができます:sql-workbench.net/manual/wb-commands.html#command-wbinclude
a_horse_with_no_name

@a_horse_with_no_nameに感謝します。「含まれているSQLスクリプトにSELECTクエリが含まれている場合、それらのクエリの結果はGUIに表示されません」というURLに気づきました私のスクリプトには多くの選択ステートメントがあります。この免責事項を確認するために、selectを含む非常に単純なスクリプトでWbIncludeコマンドを使用してこの製品をテストし、結果が表示されないことを確認しました。なんでかしら?とにかく、それ以外に、この製品はスクリプト内の他のスクリプトの呼び出しで確実に機能します。
jbits 2013年

回答:


2

psqlスクリプト

psqlスクリプトは複数のファイルにインデックス01_mydb.psqlを付けることができ、が現在の作業ディレクトリにあり01、ファイル01_schema.sqlとを含むディレクトリがあるとします02_types.sql

01_mydb.psql このように見えるかもしれません。

\i 01/01_schema.sql
\i 01/02_types.sql

あるいは、それを構造化したいのです。物事がより複雑になり、より多くの順序が必要になる場合は、サブディレクトリを追加

\i 01/10_tables/01_foo.sql
\i 01/10_tables/02_bar.sql

次に、あなたはどちらかでしょう。

  1. 01ようなインデックスファイルを追加します./01/10_tables.psql
  2. または、それらをすべてに追加する 01_mydb.sql

私が使用して第二の方法を紹介しfind

を使用findして、マスターロードスクリプトを生成します。

先に進んで、その構造を作成してみましょう。

01/
├── 01_schema.psql
├── 02_types.psql
└── 10_tables
    ├── 01_foo.psql
    └── 02_bar.psql

作成に使用するコマンドは次のとおりです。、

mkdir 01
touch 01/01_schema.sql
touch 01/02_types.sql
mkdir 01/10_tables
touch 01/10_tables/01_foo.sql
touch 01/10_tables/02_bar.sql

これでfind、ロードスクリプトの生成に使用できます

find ./01/ -type f -printf '\\i %p\n' | sort | tee master.psql
\i ./01/01_schema.sql
\i ./01/02_types.sql
\i ./01/10_tables/01_foo.sql
\i ./01/10_tables/02_bar.sql

今すぐ実行してくださいmaster.psql

psql -d database -f master.psql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.