Pull to refresh

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

Reading time 3 min
Views 5.5K
Добрый день!

В этой статье я покажу как легко и просто мигрировать (перенести данные) с 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. Заполните необходимые поля — имя БД, регион датацентра и логин/пароль для доступа к базе:



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



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

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


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



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

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





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



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



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



Без этого все будет работать пока данных мало, но будет валится с ошибкой 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 (и то, если включена эта опция в настройках сервера)



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



Создание проекта в 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



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



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



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



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



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





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



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



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


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



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



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



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



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



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

Ссылки

  1. Пробный период Windows Azure
  2. Справочный центр Windows Azure SQL Database
Tags:
Hubs:
+3
Comments 4
Comments Comments 4

Articles