【问题标题】:"use database_name" command in PostgreSQLPostgreSQL 中的“使用数据库名称”命令
【发布时间】:2012-05-07 07:29:29
【问题描述】:

我是 PostgreSQL 的初学者。

我想从 Postgres 的查询编辑器连接到另一个数据库 - 比如 MySQL 或 MS SQL Server 的 USE 命令。

我通过搜索互联网找到了\c databasename,但它只在psql 上运行。当我从 PostgreSQL 查询编辑器中尝试时,我得到一个语法错误。

我必须通过 pgscripting 更改数据库。有人知道怎么做吗?

【问题讨论】:

  • 另一种选择是直接连接到架构。示例:sudo -u postgres psql -d my_database_nameSource
  • 在 pgAdmin 中,您可以右键单击您的数据库并选择“查询工具”以在该数据库上运行查询。
  • 如果创建表,请在表名前加上数据库前缀:CREATE TABLE database.tablename;

标签: postgresql


【解决方案1】:

当您连接到PostgreSQL 时,它总是连接到特定的数据库。要访问不同的数据库,您必须建立新的连接。

在 psql 中使用 \c 会关闭旧连接并使用指定的数据库和/或凭据获取新连接。您将获得一个全新的后端流程和一切。

【讨论】:

  • 感谢 kgrittn 的宝贵指导。您能告诉我如何使用 pgscript 查询与数据库建立新连接并关闭以前的连接吗?
  • 我不熟悉 pgscript。如果这是您编写函数的语言,答案是它无法完成。也许您应该考虑将表放在不同的模式而不是不同的数据库中?
  • 查询不能改变 PostgreSQL 中的数据库。
  • 感谢 kgrittn 的所有帮助.. :)
  • 如果我没记错的话,MySQL 中的数据库更类似于 PostgreSQL 中的模式——您可以在它们之间切换,但 PostgreSQL 中的数据库是完全不同的游戏。
【解决方案2】:

您必须指定要在连接时使用的数据库;如果你想为你的脚本使用 psql,你可以使用 "\c name_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

此时您可能会看到以下输出

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

注意提示的变化。干杯,我也一直在忙着寻找这个,与 MySQL 和我认为的其余部分相比,关于 postgreSQL 的信息太少了。

【讨论】:

    【解决方案3】:

    在pgAdmin中你也可以使用

    SET search_path TO your_db_name;

    【讨论】:

      【解决方案4】:

      我从 MySQL 迁移时遇到的基本问题是,我认为术语 database 在 PostgreSQL 中也相同,但事实并非如此。因此,如果我们要从我们的应用程序或pgAdmin 切换数据库,结果将不会像预期的那样。 与我的情况一样,我们为每个客户和单独的管理模式都有单独的模式(这里考虑 PostgreSQL 术语。)。所以在应用程序中,我必须在模式之间切换。

      为此,我们可以使用SET search_path 命令。这确实会将当前模式切换为当前会话的指定模式名称。

      示例:

      SET search_path = different_schema_name;
      

      这会将 current_schema 更改为会话的指定架构。要永久更改它,我们必须在postgresql.conf 文件中进行更改。

      【讨论】:

        【解决方案5】:

        第一次连接psql时使用这个逗号

        =# psql <databaseName> <usernamePostgresql>
        

        【讨论】:

          【解决方案6】:

          PgAdmin 4,GUI 工具:在数据库之间切换

          1. 在左侧的 PgAdmin 浏览器中,右键单击您愿意切换到的数据库。
          2. 从下拉菜单中选择一个 QueryTool(或您需要的任何其他选项,我现在将继续使用 QueryTool)。
          3. 您将在 PgAdmin 窗口中看到 QueryTool,在顶部您将看到活动数据库和角色名称。
          4. 现在您可以针对所选数据库编写查询。
          5. 您可以为多个数据库打开多个 QueryTools,并像使用图形文本编辑器一样使用它们。

          为了确保您查询的是正确的数据库,请发出以下查询:

          SELECT session_user, current_database();
          

          【讨论】:

            【解决方案7】:
            set search_path = 'schema name here'
            

            在连接到 postgres 时,您必须选择默认数据库进行连接。如果你什么都没有,你可以默认使用'postgres'。

            您可以使用 dbeaver 连接到 postgres。界面不错

            【讨论】:

              猜你喜欢
              • 2012-12-17
              • 2020-02-14
              • 2023-03-26
              • 2010-09-13
              • 2013-04-19
              • 2018-04-12
              • 1970-01-01
              • 1970-01-01
              • 2019-03-06
              相关资源
              最近更新 更多