热度 1|
MySQL Workbench 提供了可以将Microsoft SQL Server的表结构和数据迁移到 GreatSQL 的功能,此次将通过MySQL Workbench将SQL Server的数据迁移到GreatSQL。
本文章只是简单演示一下单张表的迁移,如果在项目中使用请根据实际情况进行调整。
两种数据库系统的数据类型可能不完全兼容。在迁移过程中,需要确保数据在不同类型之间的正确转换,否则可能导致数据丢失或不准确。
下表显示了Microsoft SQL Server(源)数据类型和GreatSQL数据类型之间的映射。
Microsoft SQL Server Type | GreatSQL Type | Comment |
---|---|---|
INT | INT | |
TINYINT | TINYINT | UNSIGNED flag set in MySQL. |
SMALLINT | SMALLINT | |
BIGINT | BIGINT | |
BIT | TINYINT(1) | |
FLOAT | FLOAT | Precision value is used for storage size in both. |
REAL | FLOAT | |
NUMERIC | DECIMAL | |
DECIMAL | DECIMAL | |
MONEY | DECIMAL | |
SMALLMONEY | DECIMAL | |
CHAR | CHAR/LONGTEXT | Depending on its length. MySQL Server 5.6 and higher can have CHAR columns with a length up to 255 characters. Anything larger is migrated as LONGTEXT. |
NCHAR | CHAR/LONGTEXT | Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type. |
VARCHAR | VARCHAR/MEDIUMTEXT/LONGTEXT | Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. |
NVARCHAR | VARCHAR/MEDIUMTEXT/LONGTEXT | Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type. |
DATE | DATE | |
DATETIME | DATETIME | |
DATETIME2 | DATETIME | Date range in MySQL is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'. Note: fractional second values are only stored as of MySQL Server 5.6.4 and higher. |
SMALLDATETIME | DATETIME | |
DATETIMEOFFSET | DATETIME | |
TIME | TIME | |
TIMESTAMP | TIMESTAMP | |
ROWVERSION | TIMESTAMP | |
BINARY | BINARY/MEDIUMBLOB/LONGBLOB | Depending on its length. |
VARBINARY | VARBINARY/MEDIUMBLOB/LONGBLOB | Depending on its length. |
TEXT | VARCHAR/MEDIUMTEXT/LONGTEXT | Depending on its length. |
NTEXT | VARCHAR/MEDIUMTEXT/LONGTEXT | Depending on its length. |
IMAGE | TINYBLOB/MEDIUMBLOB/LONGBLOB | Depending on its length. |
SQL_VARIANT | not migrated | There is not specific support for this data type. |
TABLE | not migrated | There is not specific support for this data type. |
HIERARCHYID | not migrated | There is not specific support for this data type. |
UNIQUEIDENTIFIER | VARCHAR(64) | A unique flag set in MySQL. There is not specific support for inserting unique identifier values. |
SYSNAME | VARCHAR(160) | |
XML | TEXT |
SQL Server 和 GreatSQL 在语法、数据类型、函数、存储过程等方面存在一定的差异。某些在 SQL Server 中使用的语法和功能可能在 GreatSQL 中不支持,或者需要进行修改和调整。
例如,复杂的存储过程、触发器、视图等可能需要重新编写或修改以适应GreatSQL 的语法和规则。
如果有依赖于原始数据库的应用程序,迁移后可能需要对应用程序进行修改和测试,以确保其与GreatSQL 数据库正常交互。
在数据迁移过程中,可能会出现数据丢失、损坏或不一致的情况。需要进行充分的测试和验证,以确保数据的完整性和准确性。
GreatSQL 和 SQL Server 的性能特点不同。例如,索引的使用、查询优化器的工作方式等可能存在差异。迁移后需要重新评估和优化SQL,以确保在 GreatSQL 环境中获得良好的性能。
版本 | IP | 端口 |
---|---|---|
Microsoft SQL Server 2017 | 192.168.140.60 | 1433 |
版本 | IP | 端口 |
---|---|---|
GreatSQL-8.0.32 | 192.168.140.60 | 5000 |
略,参考文档:Datax助力轻松迁移SQLServer数据至GreatSQL
略,参考文档:二进制包安装 | GreatSQL用户手册
https://greatsql.cn/docs/8.0.32-25/4-install-guide/3-install-with-tarball.html
下载地址:https://dev.mysql.com/downloads/workbench/
双击安装,一直点 Next 即可
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P'xxx'
3> CREATE DATABASE test2024;
4> go
5> use test2024
6> go
Changed database context to 'test2024'.
1> CREATE TABLE t1 (id int,name varchar(30))
2> go
1>
2> INSERT INTO t1 VALUES (1,'a'),(2,'b'),(3,'c')
3> go
(3 rows affected)
1> SELECT * FROM t1
2> go
id name
----------- ------------------------------
1 a
2 b
3 c
(3 rows affected)
双击打开MySQL workbench,点击数据迁移功能,再点击开始迁移按钮
需要安装SQL Server驱动:Download Microsoft® SQL Server® 2012 Native Client - QFE from Official Microsoft Download Center
下载完成后,双击安装包点下一步即可
配置完成后,点击 Next
点击 Next 即可
保持默认配置即可(3个选项与目标端库表名映射有关),点击 Next
这是一个自动化的信息步骤,用于报告相关错误、常规日志信息或两者。点击 Next 进行下一步
可以在下面的列表选择要迁移的对象,默认是迁移第4步中选择的schema下的所有表
选择要迁移的对象,点击 Next
将SQL Server对象 自动转换为MySQL兼容对象,将使用默认数据类型和默认列值映射。
点击下一步即可
查看和编辑迁移对象,可以在它们被应用到目标数据库之前进行编辑
Migration Problems: 这将报告问题或显示“未找到映射问题”。
All Objects:一个对象视图,用于查看和编辑对象定义。双击一行以修改目标对象的名称。
Column Mappings:显示所有表列映射,并允许您单独查看和修复所有列类型、默认值和其他属性的映射。
可以选择在目标端数据库创建对象、或者生成创建SQL的脚本文件或两者都可以选择。
点击 Next 进行下一步
在目标端正式创建对象
这里列出了生成的对象,以及错误消息(如果存在)。
也可以在此处查看和编辑迁移代码。若要进行更改,请选择一个对象,编辑查询SQL语句,然后单击“Apply”。
对每个要编辑的对象重复此过程。最后,单击“Recreate Objects”以保存结果。
Online copy of table data to target RDBMS:此方法(默认)将数据复制到目标端数据库。
Create a batch file to copy the data at another time:数据也可以转储到一个稍后可以执行的文件中,或者用作备份。此脚本使用MySQL连接来传输数据。
Create a shell script to use native server dump and load abilities for fast migration:与执行实时在线复制的简单批处理文件不同,这会生成一个要在源主机上执行的脚本,然后生成一个Zip文件,其中包含在目标主机上本地迁移数据所需的所有数据和信息。复制并提取目标主机上生成的Zip文件,然后执行导入脚本(在目标主机上),使用LOAD data命令将数据导入MySQL。
根据上一步所选的选项,进行数据传输
数据迁移完成后,会自动生成报告,总结了整个迁移过程
登录GreatSQL查询数据
greatsql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| adm |
| das |
| information_schema |
| mysql |
| performance_schema |
| sys |
| sys_audit |
| test2024 |
+--------------------+
8 rows in set (0.00 sec)
greatsql> SELECT * FROM test2024.t1;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+------+
3 rows in set (0.00 sec)
MySQL workbench 支持从某些特定 RDBMS产品迁移到GreatSQL(MySQL),更多功能的使用可以登录MySQL官网进行查看。
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com