Назад | Перейти на главную страницу

Репликация базы данных MSSQL в MySQL

У меня есть сервер MSSQL 2005 и база данных MySQL в интрасети. Я хочу реплицировать некоторые таблицы из базы данных MSSQL в базу данных MySQL.

Я создал лицензированный сервер ODBC и успешно создал публикацию транзакций, и я вручную создал точно такие же таблицы в MySQL, и репликация, похоже, работает.

Причина, по которой я вручную создал таблицы в MySQL, заключается в том, что возникла проблема с созданием ключей и индексов из репликации из MSSQL. Что происходит, когда репликация выполняется, она преобразует поле varchar (200) в MySQL varchar, которое становится средним текстом в таблице MySQL и отображает ошибку при попытке создать первичный ключ или индекс. Как мне настроить публикацию для создания точной копии полей таблицы с правильной длиной в MySQL?

У меня на сервере установлен драйвер MySQL ODBC 5.1.

РЕДАКТИРОВАТЬ:

Когда я вижу файл MySQL.Log, он показывает запрос

CREATE TABLE `Inventory`(
    `SKU`   long varchar NOT NULL,

который впоследствии становится средним текстом в базе данных MySQL. Это показывает ошибку что-то вроде

BLOB/TEXT column 'SKU' used in key specification without a key length

в истории заданий репликации MSSQL. Когда я смотрю в таблицу в MySQL, тип поля для «SKU» - mediumtext.

Кроме того, не используйте графический интерфейс при создании публикации, добавлении статей и создании подписок, поскольку это все портит. Делайте все вручную с помощью SQL-скрипта.

Установите @schema_option = 0x000000000000000 для всех статей, чтобы SQL Server ничего не трогал.

Вероятно, вы можете использовать клиент SQuirreL SQL (на Java) для экспорта таблиц, а затем импортировать их в MySQL через JDBC. Я сомневаюсь, что существует метод ODBC для выполнения того, что вам нужно.

Кроме того, вы можете экспортировать базу данных SQL в файл CSV, а затем импортировать в MySQL с помощью команды:

LOAD DATA LOCAL INFILE C:\test.csv
INTO TABLE tbl_temp_data 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'