Найти в Дзене
1C:БИЗНЕС РЕШЕНИЯ

Мигрируем с SQL Server на PostgreSQL двумя способами

Автор: Дмитрий Нестеров Парадигма современного IT в России такова, что завтра можно проснуться без лицензии на БД, а это в свою очередь ведет к остановке производства, бизнеса, учета, отчетности. Начнем знакомство с двумя бесплатными инструментами для миграции с SQL Server на PostgreSQL, затем поэтапно пропишу, как выполнить миграцию между этими двумя базами данных. Инструменты миграции базы данных: 1.Pgloader Pgloader — это программа загрузчик данных, которая производит миграцию из MS SQL Server в PostgreSQL. Инструмент автоматически обнаруживает схему (первичный ключ, ограничения внешних ключей и структуру индексов) и предоставляет правила приведения для преобразования типа данных SQL Server в тип данных PostgreSQL. 2. Sqlserver2pgsql Sqlserver2pgsql — еще один инструмент миграции с открытым исходным кодом, написанный на Perl, который конвертирует схему SQL Server в PostgreSQL и переводит все данные SQL Server в PostgreSQL с помощью полученного Pentaho Data Integrator (Kettle). Одна

Автор: Дмитрий Нестеров

Парадигма современного IT в России такова, что завтра можно проснуться без лицензии на БД, а это в свою очередь ведет к остановке производства, бизнеса, учета, отчетности.

Начнем знакомство с двумя бесплатными инструментами для миграции с SQL Server на PostgreSQL, затем поэтапно пропишу, как выполнить миграцию между этими двумя базами данных.

Инструменты миграции базы данных:

1.Pgloader

Pgloader — это программа загрузчик данных, которая производит миграцию из MS SQL Server в PostgreSQL. Инструмент автоматически обнаруживает схему (первичный ключ, ограничения внешних ключей и структуру индексов) и предоставляет правила приведения для преобразования типа данных SQL Server в тип данных PostgreSQL.

2. Sqlserver2pgsql

Sqlserver2pgsql — еще один инструмент миграции с открытым исходным кодом, написанный на Perl, который конвертирует схему SQL Server в PostgreSQL и переводит все данные SQL Server в PostgreSQL с помощью полученного Pentaho Data Integrator (Kettle). Однако он не переносит хранимые процедуры. Этот инструмент лучше использовать для миграции базы данных в автономном режиме. Найти его можно на Github.

Он должен работать на Linux, Windows и любой Unix-системе.

Способ 1: Миграция с SQL Server на PostgreSQL с помощью SSIS

  1. Установите PostgreSQL ODBC Driver для Windows x86/x64.
  2. В SQL Server Management Studio кликните правой кнопкой мыши по исходной базе данных и выберите Tasks → Export Data.
  3. Выберите SQL Server Native Clients в качестве источника данных и .Net Framework Data Provider for ODBC в качестве драйвера назначения (destination driver).
  4. Установите строку подключения к базе данных. Добавьте имя источника данных, которое соответствует значению, заданному для Driver= {имя-вашего-источника-данных} для драйвера PostgreSQL.
-2

Способ 2: Миграция с SQL Server на PostgreSQL с помощью Sqlserver2pgsql

Что нам нужно:

  • Данные о подключении к SQL Server, включая IP, порт, имя пользователя, пароль, имена баз данных и инстансовов (если они не установлены по умолчанию).
  • Доступ к пустой целевой базе данных PostgreSQL.

Создаем образ Docker

Docker — это отличный инструмент для создания процедуры миграции баз данных, которая не будет зависеть от облака и может быть применена в большинстве IT-архитектур.

Создаем образ на OpenJDK 8, который позволяет создавать и запускать приложения Java 1.8.

-3

Настраиваем рабочий каталог

-4

Устанавливаем несколько инструментов для работы с клиентом

-5

Устанавливаем Kettle для запуска миграции

-6

Устанавливаем jTDS для подключения SQL Server в Kettle-джобе

-7

Настраиваем .sh-скрипт для запуска Kettle-джобы

-8

Настраиваем скрипт миграции

Сначала запустим bash

#!/bin/bash

Настроим его на отказ, если его команды не выполняются

set -e

Преобразуем схему SQL Server в скрипты PostgreSQL

-9

Файлы Kettle-джобы будут храниться в$MIGRATIONDIR/kettlejobs/migration.kjb.

Запускаем скрипт before.sql, содержащий SQL-команды Postgres, используемые для создания структуры таблицы

Используя для аутентификации PostgreSQL SSL-сертификаты (обратите внимание на параметры *sslmode,*sslrootcert,*sslcert*и*sslkey, необходимые для этого)

-10

Используя для аутентификации PostgreSQL логин/пароль

-11

Выполняем Kettle-джобу

-12

Запускаем скрипт after.sql

Используя для аутентификацииPostgreSQL SSL-сертификаты (обратите внимание на параметры *sslmode,*sslrootcert,*sslcert*и*sslkey, необходимые для этого)

-13

Используя для аутентификации PostgreSQL логин/пароль

-14

Создаем образ Docker-контейнера. Для этого прописываем: ...

Продолжение статьи читайте на нашем сайте 1С:БИЗНЕС РЕШЕНИЯ