我正在开发一个很长的脚本。我想将脚本分解为更小、更易于管理的脚本,并将每个 sql 文件包含在一个主文件中,然后执行主文件。
例子: master.sql
内容(我不知道要使用的语法):
file1.sql
file2.sql
file3.sql
Run Code Online (Sandbox Code Playgroud)
我找到了几个关于psql -f在命令行中使用并\i包含这些文件的教程,但这里的首选项是避免使用终端并使用 GUI 来管理我的数据库并执行master.sql脚本。
这在任何 postgres 管理 GUI 中都可能吗?大概它不在pgAdmin 中。
psql脚本psql 脚本可以索引多个文件,假设01_mydb.psql, 位于当前工作目录中,并且您有一个01包含文件01_schema.sql和02_types.sql目录。
01_mydb.psql可能看起来像这样。
\\i 01/01_schema.sql\n\\i 01/02_types.sql\nRun Code Online (Sandbox Code Playgroud)\n\n或者你想如何构建它。如果事情变得更复杂并且需要更多顺序,请添加更多子目录
\n\n\\i 01/10_tables/01_foo.sql\n\\i 01/10_tables/02_bar.sql\nRun Code Online (Sandbox Code Playgroud)\n\n那么你要么..
\n\n01,类似./01/10_tables.psql01_mydb.sql我将使用第二种方法展示find,
find生成主加载脚本。让我们继续创建该结构。
\n\n01/\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\nRun Code Online (Sandbox Code Playgroud)\n\n这是我们用来创建它的命令。,
\n\nmkdir 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\nRun Code Online (Sandbox Code Playgroud)\n\n现在你可以使用find生成加载脚本
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\nRun Code Online (Sandbox Code Playgroud)\n\n现在只需运行master.psql;
psql -d database -f master.psql\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3948 次 |
| 最近记录: |