【问题标题】:Use PostgreSQL database in SQL script在 SQL 脚本中使用 PostgreSQL 数据库
【发布时间】:2022-12-09 20:56:39
【问题描述】:

我正在从一个文件创建 3 个数据库:

CREATE DATABASE "products"
  WITH
  OWNER = postgres
  ENCODING = "UTF8"
  CONNECTION LIMIT = -1
  IS_TEMPLATE = False;

CREATE DATABASE "accounts"
  WITH
  OWNER = postgres
  ENCODING = "UTF8"
  CONNECTION LIMIT = -1
  IS_TEMPLATE = False;

CREATE TYPE role as ENUM ('employee', 'admin', 'customer');

现在我想在帐户数据库中创建类型角色。当前脚本只是在“默认”postgres 数据库中创建角色。我习惯了可以使用“use”命令的 MySQL 语法。知道如何对 PostgreSQL 脚本使用类似的命令吗?

对于其他上下文:此 SQL 文件在初始化时在 PostgreSQL docker 容器中执行。

我尝试了以下内容:

  • 使用“使用”命令。 -> 无法识别。
  • 使用“选择”命令。 -> 无效。

【问题讨论】:

  • psql 中,您使用 \connect 切换到不同的数据库。 MySQL 所谓的数据库实际上是一个模式。所以如果你想模仿 MySQL 的行为,只需创建两个图式在 Postgres 中,不是两个数据库。
  • @a_horse_with_no_name 感谢您的建议!目前我有多个微服务连接到同一个数据库服务器(但每个服务都有自己的数据库)。我宁愿保持这样。我想我可以为每项服务提供它们自己的数据库服务器……

标签: postgresql


【解决方案1】:

在 PostgreSQL 中,您必须在打开与服务器的连接时指定数据库。您不能使用 SQL 切换到不同的数据库。

来自documentation of the low-level API for opening connections

一个应用程序可以同时打开多个后端连接。(这样做的一个原因是要访问多个数据库。)

但是正如@a_horse_with_no_name 已经指出的那样,如果您使用的是psql,您可以使用命令connect 打开一个到不同数据库的新连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多