我是PostgreSQL的初学者。

我想从Postgres的查询编辑器连接到另一个数据库-像MySQL或MS SQL Server的USE命令。

我通过搜索互联网找到了\c databasename,但它只能在psql上运行。当我尝试从PostgreSQL查询编辑器,我得到一个语法错误。

我必须通过pgscripting更改数据库。有人知道怎么做吗?


当前回答

set search_path = 'schema name here'

在连接到postgres时,必须选择默认数据库进行连接。如果你什么都没有,你可以使用'postgres'作为默认值。

您可以使用dbeaver连接到postgres。UI很好

其他回答

当你连接到PostgreSQL时,它总是连接到一个特定的数据库。要访问不同的数据库,必须获得一个新的连接。

在psql中使用\c关闭旧连接,并使用指定的数据库和/或凭据获取一个新连接。你会得到一个全新的后端流程。

从MySQL迁移时遇到的基本问题是,我认为PostgreSQL中的数据库术语也是一样的,但事实并非如此。因此,如果我们要从应用程序或pgAdmin切换数据库,结果不会像预期的那样。 在我的例子中,我们为每个客户提供了单独的模式(这里考虑的是PostgreSQL术语)和单独的管理模式。所以在应用程序中,我必须在模式之间切换。

为此,我们可以使用SET search_path命令。这确实会将当前模式切换为当前会话的指定模式名。

例子:

SET search_path = different_schema_name;

这将把current_schema更改为会话的指定模式。要永久地更改它,我们必须在postgresql.conf文件中进行更改。

PgAdmin 4, GUI工具:在数据库之间切换

In the PgAdmin Browser on the left hand side, right click on the database you are willing to switch to. Select a QueryTool from the drop down menu (or any other option that you need, I will stick with the QueryTool for now). You will see the QueryTool in the PgAdmin window, and on top you will see the active database and the role name. Now you can write queries against the chosen database. You can open multiple QueryTools for multiple database, and work with them as you do with your graphical text editor.

为了确保您正在查询正确的数据库,发出以下查询:

SELECT session_user, current_database();

您必须指定连接时使用的数据库;如果你想在你的脚本中使用PSQL,你可以使用"\c name_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

此时,您可能会看到以下输出

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

注意提示符是如何变化的。Cheers,我也一直在忙着找这个,在我看来,与MySQL相比,postgreSQL的信息太少了。

在pgAdmin中也可以使用

设置搜索路径为your_db_name;