如何在 psql 中切换数据库?
Posted
技术标签:
【中文标题】如何在 psql 中切换数据库?【英文标题】:How to switch databases in psql? 【发布时间】:2011-04-26 09:06:15 【问题描述】:在 mysql 中,我使用了use database_name;
psql
等价物是什么?
【问题讨论】:
好的,这是关于psql
,PostgreSQL 的前端?
MySQL“数据库”实际上是一个模式。因此,在大多数情况下,无论如何,MySQL 的“数据库”最好映射到 Postgres 中的模式。如果这样做了,您可以使用 set schema 'schema_name';
或 set search_path to schema_name;
更改当前架构
【参考方案1】:
使用\c databaseName
或\connect databaseName
(使用 psql 13.3)
【讨论】:
【参考方案2】:您可以使用连接
\c 数据库名称
如果您想查看 POSTGRESQL 或 SQL 的所有可能命令,请按照以下步骤操作:
rails 数据库控制台 (您将被重定向到您当前的 ENV 数据库)
? (对于 POSTGRESQL 命令)
或
\h (对于 SQL 命令)
按Q退出
【讨论】:
【参考方案3】: Connect to database:
Method 1 : enter to db : sudo -u postgres psql
Connect to db : \c dbname
Method 2 : directly connect to db : sudo -u postgres psql -d my_database_name
【讨论】:
【参考方案4】:在PostgreSQL中列出和切换数据库 当您需要在数据库之间进行更改时,您将使用 \connect 命令,或 \c 后跟数据库名称,如下所示:
postgres=# \connect database_name
postgres=# \c database_name
检查您当前连接的数据库。
SELECT current_database();
PostgreSQL List Databases
postgres=# \l
postgres=# \list
【讨论】:
【参考方案5】:您还可以连接到具有不同角色的数据库,如下所示。
\connect DBNAME ROLENAME;
或
\c DBNAME ROLENAME;
【讨论】:
【参考方案6】:在PostgreSQL中,可以使用客户端工具psql的\connect
元命令:
\connect DBNAME
或者简而言之:
\c DBNAME
【讨论】:
+1:这只是一个 psql 命令,在 Postgres 本身中,没有办法“切换”。事实上,psql 并不是在 MySQL 上下文中“切换”,只是关闭一个连接并打开另一个连接。 那么用SQL就没有机会了? 那么这可以在.sql
文件中的SQL 语句中工作吗?例如我可以有CREATE DATABASE mydb;
后跟\connect mydb
吗?
@Ciwan 我很确定您不能在 SQL 脚本文件中包含 psql
命令。
对于“切换”模式,使用set searchpath=schema_name
。【参考方案7】:
虽然问题中没有明确说明,但目的是连接到特定的架构/数据库。
另一种选择是直接连接到架构。示例:
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.
【讨论】:
【参考方案8】:如果你想在启动时切换到特定的数据库,试试
/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
,它会在启动时切换到参数中名称的数据库。
【讨论】:
【参考方案9】:使用以下语句切换到驻留在内部的不同数据库 你的 postgreSQL RDMS
\c databaseName
【讨论】:
【参考方案10】:\l
用于数据库
\c
DatabaseName 切换到 db
\df
用于存储在特定数据库中的过程
【讨论】:
【参考方案11】:使用 psql 的元命令 \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo
(参见 documentation)。
示例:\c MyDatabase
注意\c
和\connect
元命令是case-sensitive。
【讨论】:
【参考方案12】:您可以使用\c <database>
或\connect <database>
连接到数据库。
【讨论】:
【参考方案13】:使用psql连接时可以选择数据库。这在从脚本中使用时很方便:
sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
【讨论】:
谢谢,我快疯了... :)【参考方案14】:在 PSQL 提示符下,您可以:
\connect (or \c) dbname
【讨论】:
以上是关于如何在 psql 中切换数据库?的主要内容,如果未能解决你的问题,请参考以下文章