Перенос данных в Windows Azure SQL Database из PostgreSQL

в 13:24, , рубрики: postgresql, windows azure, миграция, метки: , , ,

Добрый день!

В этой статье я покажу как легко и просто мигрировать (перенести данные) с PostgreSQL на облачную базу данных Windows Azure SQL Database.

Основные шаги:

  1. Создание новой базы данных в панели управления Windows Azure
  2. Установка ODBC-драйвера для PostgreSQL
  3. Создание проекта в SQL Server Data Tool
  4. Импорт данных

Создание новой базы данных в панели управления Windows Azure

Для создания новой базы данных перейдите в панель управления Windows Azure (https://manage.windowsazure.com/). Даже если у вас нет подписки, вы можете воспользоваться пробным периодом — $200 на один месяц, этого с лихвой хватит на различные эксперименты.
Щелкните по кнопке + New в левой нижней части и выберите Data Services > SQL Database > Quick Create. Заполните необходимые поля — имя БД, регион датацентра и логин/пароль для доступа к базе:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Через мгновение должно появится сообщение, что создание базы данных прошло успешно:

Перенос данных в Windows Azure SQL Database из PostgreSQL

По умолчанию создается БД с максимальным размером 1Гб — после достижения верхнего предела база данных переходит в режим «только чтение». Впрочем, при необходимости размер можно увеличить вплоть до 150Гб.

Установка ODBC-драйвера для PostgreSQL

Теперь надо установить ODBC-драйвер для postgresql. Скачайте последнюю версию с официального сайта (качайте 32-битную версию, с ней меньше проблем). Внимание! Устанавливать драйвер надо на тот компьютер, на котором в дальнейшем будет производится копирование данных, а не на сервер БД.

Перенос данных в Windows Azure SQL Database из PostgreSQL

Установка происходит элементарно и не вызывает каких-либо проблем — Next-Next-Next-Finish.

После этого надо добавить ODBC Source как для PostgreSQL, так и для SQL Database- просто введите odbc на стартовом экране и выберите из списка ODBC Data Sources (32-bit)

Перенос данных в Windows Azure SQL Database из PostgreSQL

Перенос данных в Windows Azure SQL Database из PostgreSQL

В появившемся окне нажмите Add…, выберите в списке PostgreSQL Unicode и нажмите Finish

Перенос данных в Windows Azure SQL Database из PostgreSQL

После этого введите все необходимые данные:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Теперь один из моментов, ради которого и писалась эта статья — на этом окне нажмите кнопку Datasource и обязательно поставьте галочку Use Declare/Fetch.

Перенос данных в Windows Azure SQL Database из PostgreSQL

Без этого все будет работать пока данных мало, но будет валится с ошибкой Out of memory на больших объемах — так, у меня возникала эта ошибка на таблице с приблизительно 60млн записями.

Теперь также создайте Data Source для конечного сервера в облаке — только в списке выберите SQL Server Native Client, а данные для подключения можно посмотреть в панели управления сервером, если щелкнуть «View SQL Database connection strings for ADO .Net, ODBC, PHP, and JDBC». И, как нам напоминает это окошко, надо не забыть разрешить подключения к БД с данного IP-адреса — по умолчанию коннект возможен только с IP-адресов служб Windows Azure (и то, если включена эта опция в настройках сервера)

Перенос данных в Windows Azure SQL Database из PostgreSQL

Процесс настройки также не отличается сложностью, и после этого у вас будет приблизительно такая картина:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Создание проекта в SQL Server Data Tool

Если бы миграция происходила с MySQL, то все было бы проще — есть замечательный инструмент SQL Server Migration Assistant (SSMA), который поддерживает, помимо всего прочего, и MySQL, и позволяет мигрировать очень просто и быстро. Но для PostgreSQL такого нет, поэтому придется использовать SQL Server Data Tool (что, впрочем, тоже не сложно). Запустите SQL Server Data Tool, щелкните New Project и создайте проект на основе шаблона Integration Service Project

Перенос данных в Windows Azure SQL Database из PostgreSQL

Перетащите из Toolbox'а Data Flow Task, щелкните на нем два раза — вы перейдете на вкладку Data Flow.

Перенос данных в Windows Azure SQL Database из PostgreSQL

Перетащите на рабочее поле ODBC Data Source и ODBC Destination и соедините их синей стрелкой, идущей от ODBC Source:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Щелкните два раза на ODBC Source, в появившемся окне нажмите New, затем еще раз New и выберите наш источник данных:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Нажмите два раза Ok для закрытия этих окон и выберите таблицу, из которой будут импортироваться данные:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Теперь надо таким же образом настроить приемник данных — ODBC Destination

Перенос данных в Windows Azure SQL Database из PostgreSQL

Перенос данных в Windows Azure SQL Database из PostgreSQL

Там же можно настроить соответствие колонок, если это необходимо:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Теперь еще один важный момент — следует переключить запуск проекта в 32-битный режим. Для этого щелкните правой кнопкой мыши по проекту в Solution Explorer, выберите Properties, и в разделе Configuration Properties -> Debugging установите Run64BitRuntime в False.

Перенос данных в Windows Azure SQL Database из PostgreSQL

Импорт данных

Теперь все готово для переноса данных! Нажмите F5 или кнопку «Start Debugging» на панели инструментов. В рабочей области появятся индикаторы, говорящие о том, что идет перенос данных:

Перенос данных в Windows Azure SQL Database из PostgreSQL

А в панели Progress можно наблюдать текстовый отчет:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Убедившись, что все идет по плану, можно идти пить кофе/чай — это достаточно долгий процесс (на мой взгляд, SSMA работал быстрее). После завершение процесса на источнике и приемнике данных будут зеленые галочки:

Перенос данных в Windows Azure SQL Database из PostgreSQL

А в окне Progress — текстовый отчет:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Как видим, 570К строк были скопированный за 50 минут. Можно подключится к облачной базе данных и удостоверится, что данные действительно там:

Перенос данных в Windows Azure SQL Database из PostgreSQL

Вот так можно легко и быстро перенеси большой объем данных из PostgreSQL в облачную базу данных Windows Azure SQL Database.

Ссылки

  1. Пробный период Windows Azure
  2. Справочный центр Windows Azure SQL Database

Автор: jgc128

Источник

Поделиться