2012-01-04 6 views
0

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

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

+0

Просьба уточнить ваш вопрос. Если вам нужна информация о том, как конвертировать операторы из MySQL в PostgrSQL, предоставьте некоторые из инструкций или спецификаций MySQL. Если вы хотите получить информацию о том, как ссылаться на то, что MySQL вызывает базы данных, укажите примеры того, как вы это делаете сегодня в MySQL. – zrvan

+0

Привет, уважаемый, Благодарим вас за ответ. Да, я хочу преобразовать инструкцию mysql в postgresql. Например, mysql имеет n количество баз данных. Здесь они получают доступ, например select * from dbname.tablename; Можно ли достичь такого же запроса в postgresql? –

+0

prathika: отредактируйте свой вопрос и добавьте некоторые из фактических запросов MySQL (или операторов, которые достаточно схожи, если оригинал содержит конфиденциальную информацию). Если вам нужна помощь как с инструкциями создания таблиц, так и с фактическими запросами на извлечение данных, добавьте примеры обоих типов, как они отображаются в их текущей форме MySQL. – zrvan

ответ

3

Обычно это делается с использованием схем, а не баз данных, что более или менее похоже на то, как 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, у них есть информация о том, как это сделать, это довольно просто.

+0

Не требуется ** для обновления своего пути search_path для работы с другими схемами, они могут быть явно указаны в операторах SQL (это мой предпочтительный способ записи их BTW). Обновление вашего пути search_path - это удобство. –

+0

Это правда, вам это не нужно, но если вы хотите, чтобы отношения отображались в командной строке psql для таких вещей, как \ d, вам нужно, и это довольно проблематично, когда они не показывают поэтому я бы просто рекомендовал сделать это ради здравого смысла - я обновлю, чтобы задуматься. – PlexQ

1

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

Смотрите мой ответ на этот вопрос: Relationship between catalog, schema, user, and database instance

 Смежные вопросы

  • Нет связанных вопросов^_^