在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相似。请参阅此处或此处的文档。