Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgreSQL命令中指示在哪个数据库中执行脚本?(类似于SQL Server的“使用”命令)_Sql_Postgresql - Fatal编程技术网

如何在postgreSQL命令中指示在哪个数据库中执行脚本?(类似于SQL Server的“使用”命令)

如何在postgreSQL命令中指示在哪个数据库中执行脚本?(类似于SQL Server的“使用”命令),sql,postgresql,Sql,Postgresql,我有以下问题,我需要在新版本推出之前加入一个将要运行的脚本,即在PostgreSQL中启用pgAgent的SQL代码。但是,此代码应该在维护数据库(postgres)上运行,我们运行脚本文件的数据库是另一个数据库 我记得在SQL Server中有一个命令“use”,因此您可以执行以下操作: use foo -- some code use bar -- more code \c first_db_name select * from t; --- your sql \c second_

我有以下问题,我需要在新版本推出之前加入一个将要运行的脚本,即在PostgreSQL中启用pgAgent的SQL代码。但是,此代码应该在维护数据库(postgres)上运行,我们运行脚本文件的数据库是另一个数据库

我记得在SQL Server中有一个命令“use”,因此您可以执行以下操作:

use foo

-- some code

use bar 

-- more code
\c first_db_name
select * from t; --- your sql
\c second_db_name
select * from t; --- your sql
...

PostgreSQL中是否有类似的功能?

您是否通过
psql
命令传递这些命令?如果是这样,
\c databasename
就是您想要的


您不能以这种方式切换Postgres中的数据库。实际上,您必须重新连接到另一个数据库。

PostgreSQL没有USE命令。您最有可能使用带有--dbname选项的psql来完成此任务,-dbname将数据库名称作为参数。有关可以传入的其他选项的详细信息,请参见此链接。您还需要签出--file选项

在网上浏览了一段时间后,我发现这正是我所需要的

您可以在文件中输入以下内容:

use foo

-- some code

use bar 

-- more code
\c first_db_name
select * from t; --- your sql
\c second_db_name
select * from t; --- your sql
...

实际上,输入是一个由数据库处理的文本文件。它是如何“由数据库处理的”?你必须使用一些Postgres客户端来连接它。哪一个?它是执行文本文件并通过ODBC驱动程序连接到数据库的客户端。为了更简单,假设我在pgAdmin客户机上,我想运行一个脚本,在两个不同的数据库中进行更新。有没有办法从脚本中执行此操作,或者我必须从连接到数据库的应用程序中执行此操作?从应用程序中执行。如果您完成了第一个db连接,只需放下它,否则您将需要建立两个连接。不久前,我问过pg开发者同样的问题。我记不起他们这样做的理由。但是他们说,尽管pgadmin和psql看起来只是在切换数据库,但他们实际上是在建立一个新的连接