我在 linux debian 的文件夹(/home/myHSH/scripts)中有许多 .sql 文件。我想知道将文件夹内的所有 sql 文件执行或运行到 postgreSQL v9.1 数据库中的命令。
PostgreSQL 资料:
Database name=coolDB
User name=coolUser
很高兴:如果您知道如何通过 GUI 工具(如 pgAdmin3)执行多个 sql 文件。
我在 linux debian 的文件夹(/home/myHSH/scripts)中有许多 .sql 文件。我想知道将文件夹内的所有 sql 文件执行或运行到 postgreSQL v9.1 数据库中的命令。
PostgreSQL 资料:
Database name=coolDB
User name=coolUser
很高兴:如果您知道如何通过 GUI 工具(如 pgAdmin3)执行多个 sql 文件。
从您的命令行,假设您使用 Bash 或 ZSH(简而言之,除了 csh/tcsh 之外的任何东西):
for f in *.sql;
do
psql coolDB coolUser -f "$f"
done
该find
命令与-exec
or结合使用xargs
可以使这变得非常容易。
如果你想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