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

How to switch databases in psql?

在MySQL中,我使用了use database_name;

psql等价物是什么?


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

1
\CONNECT DBNAME

或者简而言之:

1
\c DBNAME


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


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

1
\CONNECT (OR \c) dbname

您可以使用

1
\c DBNAME


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

1
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

1
\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中创建别名

1
2
3
4
5
6
7
8
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

1
2
3
4
5
6
-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';