如何在postgreSQL命令中指明哪个数据库执行脚本?

How to indicate in postgreSQL command in which database to execute a script? (simmilar to SQL Server “use” command)

我有以下问题,我需要输入一个脚本,该脚本将在新版本被滚动之前运行,即在PostgreSQL中启用PGagent的SQL代码。但是,此代码应该在维护数据库(Postgres)上运行,并且运行脚本文件的数据库是另一个数据库。

我记得在SQL Server中有一个命令"use",所以您可以执行如下操作:

1
2
3
4
5
6
7
USE foo

-- some code

USE bar

-- more code

PostgreSQL中有类似的东西吗?


您可以将如下内容放入文件:

1
2
3
4
5
\c first_db_name
SELECT * FROM t; --- your sql
\c second_db_name
SELECT * FROM t; --- your sql
...

不能这样在Postgres中切换数据库。实际上,您必须重新连接到另一个数据库。


你是通过psql命令传送这些命令吗?如果是这样的话,你想要的就是\c databasename

PSQL文档


在网上看了一段时间后,我发现这正是我需要的。http://www.postgreonline.com/journal/archives/44-using-dblink-to-access-other-postgresql-databases-and-servers.html


PostgreSQL没有use命令。您很可能使用psql和--dbname选项来完成这项工作,--dbname将数据库名称作为参数。有关可以传递的其他选项的详细信息,请参见此链接。您还需要签出--file选项。网址:http://www.postgresql.org/docs/9.0/interactive/app-psql.html