如何在psql中切换数据库?

Bla*_*man 1029 postgresql psql

在我使用的MySQL中 use database_name;

什么是psql等价物?

Wil*_*ung 1564

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

\connect DBNAME
Run Code Online (Sandbox Code Playgroud)

或简而言之:

\c DBNAME
Run Code Online (Sandbox Code Playgroud)

  • +1:这只是一个psql命令,在Postgres本身,没有办法"切换".事实上,psql并没有在MySQL上下文中"切换",只是关闭一个连接并打开另一个连接. (112认同)
  • 所以没有机会用SQL做到这一点? (11认同)
  • 那么这可以在`.sql`文件中的SQL语句中工作吗?例如,我可以使用`CREATE DATABASE mydb;`后跟`\ connect mydb`吗? (5认同)
  • @Ciwan 我很确定你不能在 SQL 脚本文件中包含 `psql` 命令。 (3认同)
  • 对于“切换”模式,请使用 [`set searchpath=schema_name`](https://www.postgresql.org/docs/12/ddl-schemas.html#DDL-SCHEMAS-PATH)。 (3认同)
  • @J86是的,您可以在“.sql”文件中使用“CREATE DATABASE mydb;”行,后跟“\connect mydb”行,只要该文件由“psql”运行。(例如,使用 psql 运行:`\i path_to_sql_script.sql`)[我知道,因为我刚刚尝试过这个并且它有效] (3认同)
  • @HansGinzel 改变模式而不是数据库有很大的不同! (2认同)
  • @Peter:MySQL 的数据库实际上是模式。因此在大多数情况下它们应该映射到 Postgres 中的模式,而不是数据库。 (2认同)

mea*_*gar 182

您可以使用\c <database>或连接到数据库\connect <database>.


Mic*_*eyn 96

在PSQL提示符下,您可以执行以下操作:

\connect (or \c) dbname
Run Code Online (Sandbox Code Playgroud)


Ani*_*AOU 46

使用\c databaseName\connect databaseName

(正在 psql 13.3 上工作)


Man*_*los 27

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

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我疯了...... :) (3认同)

Jes*_*nan 27

你可以使用连接

\c dbname
Run Code Online (Sandbox Code Playgroud)

  • postgres-#\?你可以得到你需要的所有答案 (3认同)
  • 虽然我们感谢您的回答,但如果它在其他答案之上提供额外的价值会更好.在这种情况下,您的答案不会提供额外的价值,因为另一个用户已经发布了该解决方案.如果之前的回答对您有帮助,您应该将其投票而不是重复相同的信息. (3认同)

Ali*_*aka 11

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

另一种选择是直接连接到架构。例子:

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.
Run Code Online (Sandbox Code Playgroud)


Fra*_*urt 9

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

例: \c MyDatabase

请注意,\c\connectmeta命令区分大小写.


小智 9

\l对于数据库 \cDatabaseName,切换到db \df以存储在特定数据库中的过程


小智 7

使用以下语句切换到驻留在postgreSQL RDMS中的不同数据库

\c databaseName
Run Code Online (Sandbox Code Playgroud)


Lak*_*aza 7

您可以使用以下方式连接

\c 数据库名

如果您想查看 POSTGRESQL 或 SQL 的所有可能命令,请按照以下步骤操作:

  1. Rails dbconsole(您将被重定向到当前的 ENV 数据库)

  2. ?(对于 POSTGRESQL 命令)

或者

  1. \h(对于 SQL 命令)

  2. 按 Q 退出


小智 7

列出和切换数据库在PostgreSQL\n当您需要在数据库之间进行更改时,\xe2\x80\x99 将使用 \\connect 命令,或 \\c 后跟数据库名称,如下所示:

\n
postgres=# \\connect database_name\npostgres=# \\c database_name\n
Run Code Online (Sandbox Code Playgroud)\n

检查您当前连接的数据库。

\n
SELECT current_database();\n
Run Code Online (Sandbox Code Playgroud)\n

PostgreSQL 列表数据库

\n
postgres=# \\l\n postgres=# \\list\n
Run Code Online (Sandbox Code Playgroud)\n


Vig*_*aja 5

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

/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
}
Run Code Online (Sandbox Code Playgroud)

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


Abh*_*hek 5

您还可以连接到具有不同 ROLE 的数据库,如下所示。

\connect DBNAME ROLENAME;
Run Code Online (Sandbox Code Playgroud)

或者

\c DBNAME ROLENAME;
Run Code Online (Sandbox Code Playgroud)