是否有可以执行包含多个 sql 文件的主文件的 Postgres 管理 GUI

jbi*_*its 8 postgresql psql

我正在开发一个很长的脚本。我想将脚本分解为更小、更易于管理的脚本,并将每个 sql 文件包含在一个主文件中,然后执行主文件。

例子: master.sql

内容(我不知道要使用的语法):

file1.sql
file2.sql
file3.sql
Run Code Online (Sandbox Code Playgroud)

我找到了几个关于psql -f在命令行中使用并\i包含这些文件的教程,但这里的首选项是避免使用终端并使用 GUI 来管理我的数据库并执行master.sql脚本。

这在任何 postgres 管理 GUI 中都可能吗?大概它不在pgAdmin 中。

Eva*_*oll 2

Apsql脚本

\n\n

psql 脚本可以索引多个文件,假设01_mydb.psql, 位于当前工作目录中,并且您有一个01包含文件01_schema.sql02_types.sql目录。

\n\n

01_mydb.psql可能看起来像这样。

\n\n
\\i 01/01_schema.sql\n\\i 01/02_types.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者你想如何构建它。如果事情变得更复杂并且需要更多顺序,请添加更多子目录

\n\n
\\i 01/10_tables/01_foo.sql\n\\i 01/10_tables/02_bar.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么你要么..

\n\n
    \n
  1. 添加索引文件在01,类似./01/10_tables.psql
  2. \n
  3. 或者,将它们全部添加到01_mydb.sql
  4. \n
\n\n

我将使用第二种方法展示find

\n\n

使用find生成主加载脚本。

\n\n

让我们继续创建该结构。

\n\n
01/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 01_schema.psql\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 02_types.psql\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 10_tables\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 01_foo.psql\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 02_bar.psql\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我们用来创建它的命令。,

\n\n
mkdir 01\ntouch 01/01_schema.sql\ntouch 01/02_types.sql\nmkdir 01/10_tables\ntouch 01/10_tables/01_foo.sql\ntouch 01/10_tables/02_bar.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在你可以使用find生成加载脚本

\n\n
find ./01/ -type f -printf '\\\\i %p\\n' | sort | tee master.psql\n\\i ./01/01_schema.sql\n\\i ./01/02_types.sql\n\\i ./01/10_tables/01_foo.sql\n\\i ./01/10_tables/02_bar.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在只需运行master.psql

\n\n
psql -d database -f master.psql\n
Run Code Online (Sandbox Code Playgroud)\n