Проблема переноса nvarchar (max) (MSSQL) в текст (MySQL) - PullRequest
0 голосов
/ 08 июля 2019

Я в процессе миграции базы данных SQL Server 2012 (работает на Windows Server 2008) на MySQL (MariaDB, работает на CentOS 7.6.1810).Я использую MySQL Workbench (установлен на сервере Windows) для переноса данных.Для большинства таблиц и столбцов это работает, за исключением типов данных «nvarchar (max)» и «text».MySQL Workbench продолжает зависать, несмотря на отсутствие активных блокировок для данных, которые я пытаюсь экспортировать.

Я попытался сначала преобразовать данные в «varbinary (max)», затем экспортировать (в эквивалент MySQL «longblob»), а затем преобразовать их в целевой тип данных «longtext».Такой способ экспорта данных работает, но кодировка неправильная, и я не знаю, как это исправить.Например:

Source (MSSQL, data type nvarchar(max)):
"service"

Source (MSSQL, data type varbinary(max)):
"0x7300650072007600690063006500"

Target (MySQL, data type longblob):
"s e r v i c e "

Я пытался впоследствии преобразовать / преобразовать это в longtext, text, char (n) и т. Д., Также указав кодировки (utf8, utf16, ucs2), но я либо получаю«служба» или некоторые китайские иероглифы.Я также пытался преобразовать исходный тип данных в «varchar (max)», «text», но безуспешно (преобразование его в «text» также приводит к зависанию рабочей среды MySQL).

Проблема конкретноприменяется к столбцам, где некоторые значения имеют длину> 8000 байтов.Если бы все значения были меньше, я бы просто преобразовал все столбцы «nvarchar (max)» в «nvarchar (n)», что, как я подтвердил, сработало нормально.

Я вижу только два варианта: -Найдите способ преобразования целевых двоичных данных в кодировку целевой базы данных (ucs2), не удаляя все пробелы, например, в «service», или - Найдите другой способ экспорта данных из MSSQL в MySQL, который такжеподдерживает длину более 8000 байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...