SQLServer数据迁移至MYSQL

本次转换需要依赖使用工具Navicat Premium。 

       两种工具:1. Navicat Premium     2. mss2sql(推荐使用)(将数据备份到本地mysql  然后在到正式库 注意字符集:gb2312)

  首先,将数据库移至本地SQLServer,我试过直接在局域网上其他SQLServer服务器上想转到本地Mysql好像有问题,想将远程数据库备份恢复到本地。

  1、打开Navicat Premium,新建一个同名的数据库,然后在表上点击“导入向导”。并选择“ODBC”。

  

  2、选择SQLServer提供程序,并输入参数。

  

  

  

  3、然后就拼命下一步、下一步。

  

  

  

  在这里有个条件查询,如果有太多不想要的数据,或者字段类型有问题导致导入出错可以设置这里。

  

  大功告成,下班吃饭。

  补充:这个东西对SQLServer转MySQL数据类型转换的支持不是很好,要手动设置。但是导入数据没有问题,最好的方式是:

  先使用工具:mss2sql将SQLServer的表转换成MYSQL的表,然后在使用此工具的ODBC导数据。 mss2sql使用

  http://blog.youkuaiyun.com/andrew_wx/article/details/6832404

  问题记录:

  1、SQLServer数据导入到MySQL时,mss2sql对bit类型的处理不太好,所以有bit类型的字段表导入后要更改长度为8,否则后续的导入操作将会失败。

  2、数据导入的时候,如果是局域网数据库,那么要选择的类型为:

  

  SQLServer的SQL语句专MySQL的SQL语句:

  1、Insert自增列要给Null(如果是简写不写列名的话);
  2、分页大致上都要改为MySQL的Limit;
  3、表名不要出现dbo.等前缀;

### 将 SQL Server 中的数据迁移MySQL 的方法 #### 1. 准备工作 为了顺利地将 SQL Server 数据库迁移到 MySQL,需准备必要的工具和环境。确保安装有最新版本的 SQL Server Management Studio (SSMS) 和 MySQL Workbench 或其他支持 MySQL 的管理工具[^1]。 #### 2. 导出 SQL Server 表结构与数据 通过 SSMS 可导出表定义及其中的数据至文件。对于复杂的应用场景建议采用脚本方式提取模式(schema),并利用 bcp 工具或其他批量复制程序来传输大量数据[^3]。 ```sql -- 使用 T-SQL 脚本生成 CREATE TABLE 语句 SELECT 'CREATE TABLE [' + s.name + '].[' + t.name + '] (' + STUFF((SELECT ', [' + c.name + '] ' + TYPE_NAME(c.system_type_id) FROM sys.columns AS c WHERE OBJECT_ID = t.OBJECT_ID FOR XML PATH('')), 1, 2, '') + ');' FROM sys.tables AS t INNER JOIN sys.schemas AS s ON t.schema_id = s.schema_id; ``` #### 3. 修改兼容性差异 SQL Server 和 MySQL 存在语法上的不同之处,在导入之前要仔细检查并修正这些不一致的地方。比如日期时间类型的表示法、字符串函数调用等可能存在的区别[^2]。 #### 4. 创建目标数据库及其对象 登录到 MySQL 实例创建新的数据库实例以及相应的表格结构。可以手动编写 DDL (Data Definition Language)命令或者借助图形界面完成此操作。 ```sql -- 在 MySQL 中创建新表的例子 CREATE DATABASE my_new_db; USE my_new_db; CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` #### 5. 加载转换后的数据集 最后一步就是实际执行 ETL(Extract Transform Load)流程加载处理过的数据进入 MySQL 系统内。这可以通过多种途径实现,包括但不限于直接 INSERT INTO ... SELECT * FROM 外部源;或是先保存成 CSV 文件再使用 LOAD DATA INFILE 命令快速填充大容量记录集合。 ```bash # 如果选择了CSV作为中间媒介,则可以在MySQL端运行如下指令: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE target_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值