将nvarchar(max)(MSSQL)迁移到文本(MySQL)时遇到问题

时间:2019-07-08 20:53:45

标签: mysql sql character-encoding mariadb database-migration

我正在将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),但是我要么以“ s r v i c e”结尾,要么以一些汉字结尾。我还尝试将源数据类型转换为“ varchar(max)”,“ text”,但是没有成功(将其转换为“ text”也会导致MySQL工作台挂起)。

该问题特别适用于某些值的长度大于8000字节的列。如果所有值都较小,那么我会将所有“ nvarchar(max)”列都转换为“ nvarchar(n)”,我确认这很好。

我个人唯一看到的两个选择是: -找出一种将目标二进制数据转换为目标数据库编码(ucs2)的方法,而不仅仅是删除“ s r v i c e”中的所有空格,或者 -找出将数据从MSSQL导出到MySQL的另一种方法,该方法还支持超过8000个字节的长度。

0 个答案:

没有答案