mysql - 如何使用 PostgreSQL 完成 "MySQL cross database reference"

标签 mysql database postgresql database-migration

我们将在我们的产品中将数据库从 mysql 迁移到 postgresql(通过 java)。所以我们需要在 java 应用程序中将 mysql 查询更改为 postgresql 查询。如何在 postgresql 中创建表,即 databasename.tablename。 对于mysql,我们可以直接创建表,例如create table information.employee。 这里的数据库名称是“information”,表名称是“employee”。是否有可能在 postgresql 中实现相同的查询。

我用谷歌搜索它说跨数据库引用是不可能的。请帮我。 我看到 pg_class 表它包含特定数据库中的表名,就像明智的数据库和表关系存储在任何其他表中。

最佳答案

这通常是使用模式而不是数据库完成的,这或多或少类似于 MySQL 的组织方式。

代替

create database xyz  

使用

create schema xyz

创建表时,创建它们:

create table xyz.myTable

您需要更新您的搜索路径才能在 psql 命令行工具上看到它们,或者如果您想在不显式使用模式的情况下查询它们。默认模式是公共(public)的,因此当您创建一个没有模式名称的表时,它最终是公共(public)的。如果您按如下方式修改 search_path,则默认架构将成为列表中的第一个:xyz。

set search_path=xyz,public,pg_catalog;

并且您在该语句中不能有空格。您也可以为用户/角色全局执行此操作:

alter role webuser set search_path=xyz,public,pg_catalog;

此外,不要忘记 postgresql 字符串匹配在默认情况下区分大小写(这一点让很多人感到困惑)。 如果你想为每个模式的文件设置不同的物理位置,你可以使用表空间来实现。如果您查看 postgresql 文档页面,他们会提供有关如何执行此操作的信息,这非常简单。

关于mysql - 如何使用 PostgreSQL 完成 "MySQL cross database reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726743/

相关文章:

mysql - 在nodejs中使用关联和排序来 Sequelize findAll

mysql - 在 MySQL 中,如何根据我对同一张表进行 INNER JOIN 的表的结果进行删除?

MySQL - 基于多态表值的条件查询结果?

mysql - IN 运算符的逗号分隔参数,MySQL

javascript - 使用 foreach 在数据库 laravel javascript 中双重输入每个输入类型文本

ruby-on-rails - 带外部数据库的 Ruby on Rails,网络请求问题

Postgresql 9.1 从所有模式中选择

postgresql - 如何检索 PostgreSQL 数据库的评论?

mysql - 2 个日期范围交集的日期计数

php - 需要帮助使用 HTML 表单中的值更新数据库行