如何在 postgreSQL linux 中执行多个 sql 文件?

Posted

技术标签:

【中文标题】如何在 postgreSQL linux 中执行多个 sql 文件?【英文标题】:How to execute multiple sql files in postgreSQL linux? 【发布时间】:2012-10-25 05:31:23 【问题描述】:

我在 linux debian 的一个文件夹 (/home/myHSH/scripts) 中有许多 .sql 文件。我想知道将文件夹内的所有sql文件执行或运行到postgreSQL v9.1数据库中的命令。

PostgreSQL 信息:

Database name=coolDB
User name=coolUser

很高兴:如果您知道如何通过 GUI 工具(如 pgAdmin3)执行多个 sql 文件。

【问题讨论】:

【参考方案1】:

从您的命令行,假设您使用的是 Bash 或 ZSH(简而言之,除了 csh/tcsh 之外的任何东西):

for f in *.sql;
do
    psql coolDB coolUser -f "$f"
done

【讨论】:

【参考方案2】:

find 命令与-execxargs 结合使用可以让这变得非常简单。

如果你想对每个文件执行一次psql,你可以像这样使用exec命令

find . -iname "*.sql" -exec psql -U username -d databasename -q -f  \;

-exec 将对每个结果执行一次命令。

psql 命令允许您通过使用新的-f 参数调用每个文件来指定多个文件。例如您可以构建一个命令,例如

psql -U username -d databasename -q -f file1 -f file2

这可以通过将find 的结果传送到xargs 命令一次以使用-f 参数格式化文件然后再次执行命令本身来完成。

find . -iname "*.sql" | xargs printf -- ' -f %s' | xargs -t psql -U username -d databasename -q

【讨论】:

以上是关于如何在 postgreSQL linux 中执行多个 sql 文件?的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 中具有特定模式的 Linq 和实体迁移

如何写.bat文件,连接PostgreSQl,执行SQL文件.

如何查看PostgreSQL正在执行的SQL

如何在 Linux 多线程环境中测量函数的总执行时间

如何在 PostgreSQL 中实现多对多关系?

如何查看用户在 PostgreSQL 中执行的查询?