2015-04-02 7 views
0

У меня есть mysql DB, который имеет 30-40 таблиц. Теперь я хочу передать свои данные в базу данных postgresql, которая имеет другую структуру, чем mysql DB.So. Я хочу передать только некоторые из значения столбцов в potsgresql.
Я хочу сделать это на сервере Windows.
Как это сделать? Есть ли для этого инструменты?Передача данных из mysql DB в postgresql DB

+0

Есть тонна инструментов там, чтобы помочь вам, например, [EasyFrom] (HTTP: //www.easyfrom. net /), которую можно оценить. Вот блог с [подсказками для перехода от MySQL к Postgres] (http://blog.endpoint.com/2014/11/mysql-to-postgresql-migration-tips.html) –

ответ

0

Для селективной миграции, как это я настоятельно рекомендую использовать инструмент ETL, как:

  • Pentaho чайник
  • Talend Студия
  • CloverETL

плюс ручной преобразования схемы.

Вы можете попробовать инструмент миграции DB, например, инструмент EasyFrom, предложенный Тимом, но я никогда не был впечатлен ни одним из тех, что я использовал до сих пор.

Другой вариант - просто сделать CSV-дамп из MySQL с помощью SELECT ... INTO OUTFILE, а затем использовать команду PostgreSQL COPY для загрузки CSV.

1

Для выборочной миграции, когда вы хотите реплицировать данные из MySQL в Postgres, самым простым способом было бы использовать так называемые обертки данных. https://wiki.postgresql.org/wiki/Foreign_data_wrappers

Вам нужно будет создать расширение mysql_fwd в базе данных Postgres, определить сервер mysql и сопоставление пользователей. Затем вы можете создавать «внешние таблицы», которые могут восприниматься как окна во внешней базе данных. И вы можете использовать их для чтения, а также для написания.

CREATE EXTENSION mysql_fdw; 



CREATE SERVER mysql_cms 
FOREIGN DATA WRAPPER mysql_fdw 
OPTIONS (host '192.168.125.206', port '3306'); 



ALTER SERVER mysql_cms OWNER TO cmsuser; 

CREATE USER MAPPING FOR cmsuser SERVER mysql_cms OPTIONS (username 'cmsuser', password '123456'); 



CREATE SCHEMA mysql_cms AUTHORIZATION cmsuser; 

это пример команды SQL, который создает внешнюю таблицу

CREATE FOREIGN TABLE mysql_cms.video(
    id INT, 
    artist text, 
    title text) 
SERVER mysql_cms 
    OPTIONS (dbname 'cms', TABLE_NAME 'video'); 
+0

благодарит за ответ –

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