Metrika

4 февраля 2011 г.

Миграция данных из MySQL в MS SQL Server

Два сервера: 192.168.0.1 (MySQL Community Server 5.5.8) и 192.168.0.2 (SQL Server 2008 R2)
1. На сервере 192.168.0.1 необходимо создать пользователя:
CREATE USER 'user_name'@'%' IDENTIFIED BY 'password';
GRANT select ON db_name.* TO 'user_name'@'%';
'%' - обозначает, что этот пользователь может конектиться к серверу MySQL с любого хоста. Подробнее о создание пользователей в MySQL читайте здесь.
2. На сервер 192.168.0.2 необходимо установить коннектор для Windows.


Далее можно создавать пакет SSIS или сделать единоразовую загрузку.

Для единоразовой загрузки необходимо:
1. В Management Studio тыкаем правой кнопкой на базе, в меню выбираем Tasks -> Export Data...
2. В открывшемся окне выбираем Data Source -> .Net Framework Data Provider for MySQL
3. Заполняем поля:
Database, Server, Password, User Id
4. Далее настраиваем получатель данных: Server, Database
5. В следующем окне выбираем "Write a query to specify the data to transfer"
6. Далее вводим запрос для извлечения данных: SELECT * FROM table_name
7. В следующем окне вставляем имя таблицы в SQL Server и жмем в этом и следующем окне Next.

А теперь о проблемах.
В MySQL в таблице было примерно 2,2 млн. записей. Когда я писал запрос
SELECT * FROM table_name
то данные не копировались, если писал вот так:
SELECT * FROM table_name LIMIT 5
копировалось, как и должно было, 5 строк, но если я писал вот так:
SELECT * FROM table_name LIMIT 3000000
выдавало ошибку.
После долгих мытарств, я решил сохранить этот пакет как файл, получился файл с расширением dtsx, открыл его в текстовом редакторе и заменил LIMIT 5 на LIMIT 3000000, потом выполнил его и он, на удивление, все выполнил.

Комментариев нет :

Отправить комментарий