我们将在我们的产品中将数据库从 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/