Как выполнить «перекрестную ссылку на базу данных MySQL» с PostgreSQL - PullRequest
0 голосов
/ 04 января 2012

Мы перенесем базу данных из mysql в postgresql в нашем продукте (через Java).Поэтому нам нужно изменить запрос mysql на запрос postgresql в приложении java.Как создать таблицу, т. Е. Databasename.tablename в postgresql.Для mysql мы можем напрямую создать таблицу, например, создать таблицу information.employee.Здесь имя базы данных - «информация», а имя таблицы - «сотрудник».Можно ли добиться того же запроса в postgresql.

Я искал в Google, он говорит, что перекрестная ссылка на базу данных невозможна.Пожалуйста, помогите мне.Я видел таблицу pg_class, в которой содержатся имена таблиц в конкретной базе данных, например, мудрая база данных и связи таблиц хранятся в любой другой таблице.

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Обычно это делается с использованием схем, а не баз данных, что в любом случае более или менее похоже на то, как MySQL его организует.

Вместо

create database xyz  

использовать

create schema xyz

Когда вы создаете таблицы, создайте их:

create table xyz.myTable

вам нужно будет обновить свой путь поиска, чтобы увидеть их в инструменте командной строки psql, или если вы хотите запросить их без явного использования схемы. Схема по умолчанию является общедоступной, поэтому при создании таблицы без имени схемы она становится общедоступной. Если вы измените свой путь_поиска, как показано ниже, схема по умолчанию станет первой в списке: xyz.

set search_path=xyz,public,pg_catalog;

и в этом утверждении не должно быть пробелов. Вы также можете сделать это глобально для пользователя / роли:

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

Кроме того, не забывайте, что совпадения строк в postgresql по умолчанию чувствительны к регистру (это часто привлекает внимание людей). Если вы хотите иметь разные физические местоположения для файлов для каждой схемы, вы можете сделать это с табличными пространствами. Если вы загляните на страницу документации postgresql, у них есть информация о том, как это сделать, это довольно просто.

1 голос
/ 04 января 2012

база данных в MySQL == схема в PostgreSQL. Так что вы, скорее всего, захотите перенести все ваши базы данных mysql в одну базу данных postgres. Тогда вы сможете выполнять запросы кросс-баз данных.

См. Мой ответ на этот вопрос: Связь между каталогом, схемой, пользователем и экземпляром базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...