如何在 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 中切换数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PostgreSQL 中转置列和行(即如何切换行和列)? [复制]

数据库简单操作

PSQL工具使用技巧

postgresql中怎么用psql命令

pg 常用操作指令

postgresql 主从复制并切换