psql切换schema_关于PostgreSQL:如何在PSQL中切换数据库?

在MySQL中,我使用了use database_name;

psql等价物是什么?

在PostgreSQL中,可以使用客户端工具psql的\connectmeta命令:

\CONNECT DBNAME

或者简而言之:

\c DBNAME

+1:这只是一个psql命令,Postgres本身就没有办法"切换"。事实上,psql并不是在mysql上下文中"切换",只是关闭一个连接并打开另一个连接。

所以没有机会使用SQL?

那么,这能在.sql文件中的SQL语句中工作吗?例如,我可以让CREATE DATABASE mydb;后面跟\connect mydb吗?

@ciwan我很确定您不能在SQL脚本文件中包含psql命令。

您可以使用\c或\connect连接到数据库。

在psql提示下,可以执行以下操作:

\CONNECT (OR \c) dbname

您可以使用

\c DBNAME

使用查找更多帮助

Postgres-?你可以得到你需要的所有答案

虽然我们感谢您的回答,但如果它能在其他答案的基础上提供额外的价值,那就更好了。在这种情况下,您的答案不提供附加值,因为另一个用户已经发布了该解决方案。如果以前的答案对你有帮助,你应该投票决定,而不是重复同样的信息。

问题不在帮助中心中定义的堆栈溢出主题上。请不要回答这些问题;相反,您应该标记它们以引起注意,它们将被适当地关闭或迁移。

同样的解决方案比这个答案早了6年多。

您可以在与psql连接时选择数据库。当从脚本中使用它时,这很方便:

sudo -u postgres psql -c"CREATE SCHEMA test AUTHORIZATION test;" test

谢谢,我疯了…:)

使用psql的meta命令\c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(参见文档)。

示例:\c MyDatabase

注意,\c和\connect元命令区分大小写。

用于数据库的\l切换到数据库的\c数据库名用于存储在特定数据库中的过程的\df。

使用下面的语句切换到位于内部的不同数据库你的PostgreSQL RDMS

\c databaseName

如果要在启动时切换到特定数据库,请尝试

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;

默认情况下,Postgres在端口5432上运行。如果它在另一个上运行,请确保在命令行中传递端口。

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p2345 vigneshdb;

通过一个简单的别名,我们可以使它变得方便。

在.bashrc或.bash_profile中创建别名

FUNCTION psql()

{

db=vigneshdb

IF ["$1" !=""]; THEN

db=$1

fi

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p5432 $1

}

在命令行中运行psql,将切换到默认数据库;psql anotherdb在启动时,将切换到名称为in参数的db。

尽管问题中没有明确说明,但目的是连接到特定的模式/数据库。

另一种选择是直接连接到模式。例子:

sudo -u postgres psql -d my_database_name

来源:man psql:

-d dbname

--dbname=dbname

Specifies the name OF the DATABASE TO CONNECT TO. This IS equivalent TO specifying dbname AS the FIRST non-OPTION argument ON the command line.

IF this parameter contains an = sign OR starts WITH a valid URI prefix (postgresql:// OR postgres://), it IS treated AS a conninfo string. See SECTION 31.1.1,"Connection Strings", IN the

documentation FOR more information.

如其他答案中所述,您需要更改连接以使用其他数据库。

Postgres使用模式。在一个数据库中可以有多个方案。因此,如果您在同一个数据库中工作,并且想要更改模式,那么可以执行以下操作:

SET SCHEMA 'schema_name';

这是错误的。这将只更改搜索路径中使用的架构。数据库包含多个架构。

@我同意你的看法

除@cpburnz的评论外,SET SCHEMA用作SET SCHEMA 'schema_name',而不是SET SCHEMA 'database_name'。所以这是一种改变模式而不是数据库的SQL方法。这也与SET search_path TO schema_name相似。请参阅此处或此处的文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值