PostgreSQL中的“使用数据库名称”命令


366

我是PostgreSQL的初学者。

我想从Postgres的查询编辑器连接到另一个数据库,例如USEMySQL或MS SQL Server 的命令。

\c databasename通过搜索Internet 找到了,但是它只能在psql上运行。当我从PostgreSQL查询编辑器尝试时,出现语法错误。

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



另一个选择是直接连接到架构。范例:sudo -u postgres psql -d my_database_name来源
AlikElzin-kilaka

Answers:


381

当您获得连接时,PostgreSQL它总是连接到特定的数据库。要访问其他数据库,您必须获得新的连接。

使用\c在PSQL关闭旧连接,并获取一个新的,用指定的数据库和/或凭证。您将获得一个全新的后端流程以及所有内容。


感谢kgrittn的宝贵指导。您能告诉我如何使用pgscript查询建立新的数据库连接并关闭以前的数据库吗?
2012年

我对pgscript不熟悉。如果那是您编写函数所使用的语言,那么答案是它无法完成。也许您应该考虑将表放在不同的模式而不是不同的数据库中
kgrittn

2
查询无法更改PostgreSQL中的数据库。
kgrittn

谢谢kgrittn的所有帮助。..:)
sam

8
如果我没记错的话,MySQL中的数据库更类似于PostgreSQL中的模式-您可以在它们之间进行切换,但是PostgreSQL中的DB则完全不同。
mpen 2012年

213

您必须指定要在连接上使用的数据库。如果要对脚本使用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=#

注意提示如何更改。干杯,我也一直在忙着寻找这个东西,与MySQL相比,关于postgreSQL的信息太少了,其余的在我看来。



9

从MySQL迁移时遇到的基本问题是,我认为该术语database在PostgreSQL中也相同,但事实并非如此。因此,如果我们要从应用程序或切换数据库pgAdmin,则结果将与预期的不同。在我的情况下,我们为每个客户有单独的架构(此处考虑PostgreSQL术语)和单独的管理架构。因此,在应用程序中,我必须在模式之间切换。

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

例:

SET search_path = different_schema_name;

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.