在Postgres的单个SQL文件中调用多个SQL文件


11

如何在Postgres中的单个sql文件中调用多个sql文件

例如我有aaa.sql,bbb.sql,ccc.sql。

我想从xxx.sql执行这3个文件。

谁能建议我该怎么做。

Answers:


12

如果psql要通过\i指令运行这些文件(“从文件执行命令”)。

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

如果要通过其他程序传递这些文件,则需要自己组合文件-我认为没有任何SQL标准的执行外部文件的方法。


感谢您的答复。我将测试并确认我是否能够达到目标
2012年

看起来还没有工作还不确定我是否缺少某些东西。我到底需要半冒号吗???-并不是的 !!!
2012年

1
您需要比“不起作用”更具体-我向您保证这确实起作用-请参阅psql手册
voretaq7

有效。最后:-) Thanku问题是-它无法识别文件,并且O指定了文件及其工作的相对路径,再次感谢您
2012年

@Trip Trip,别忘了感谢voretaq的回答!
理查德T

4

并非完全符合您的要求,但可以满足您的目的:1)将所有脚本文件放在一个文件夹中;和2)使用bash脚本遍历文件并运行psql。例如:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

实际上,这要好一些,因为您不必键入文件名。


3

在bash shell上,您也可以使用 find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;

要求您使用"*.sql"而不是*.sql
Jeel Shah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.