SSIS向MySQL目标(Destination)写数据--Step By Step
阅读原文时间:2023年07月09日阅读:1

前言(废话)

最近的工作中涉及到SQLSERVER向MySQL的数据迁移同步,团队中理所当然准备用开发C#微服务接口的方式实现,我觉得这个路子曲折了,推荐SSIS的方式并自告奋勇接下了这个活.不过以前都是sqlserver间互相传数据,还没往MySQL写过数据,没想到处理的过程遇到很多问题,网络上搜索SSIS往MySQL导数据要么说不确定是否可行,要么就说不可行,搞得我都一度怀疑是不是往MySQL写数据本就不可行.为了交付工作,只好放弃了SSIS方案,用SqlServer的"生成脚本"连带整个表的数据批量导出脚本,然后放到MySQL中修改为MySQL的语法再批量执行,算是曲线完成了工作.过了几天因为要做成自动同步,于是又搬出来研究了一番.所幸一堆的踩坑和填坑后,总算解决了.

主要分以下几步实现:

1. 创建ODBC 连接

  • 从MySQL官方网站下载安装ODBC连接驱动Connector/ODBC 8.0

    注意是选择32位版本

  • 创建DSN ODBC数据源

    访问到控制面板,查看方式选择小图标

    依次选择 管理工具/ODBC Data Source(32-bit)/系统DSN/添加

  • 创建ODBC连接

    ①在连接管理器中右键点击"新建连接";

    ②选择ODBC;

    ③在新建界面选择"使用用户名或系统数据源名称",下拉项中选择前面维护的DSN,输入用户名,密码;

    ④设置属性RetainSameConnection=True.

2. 创建ODBC Destination

数据源组件选择普通的"OLE DB源"组件即可.目标组件选择比较多,"OLE DB Destination","ADO NET Destination","ODBC Destination",搜了些资料貌似"ADO NET Destination"是可以的,但我一番踩坑没试出来,我的验证只有"ODBC Destination"是可行的.

3. 创建执行SQL任务

执行时会提示语法错误,需要设置一下Mysql的sql_model,创建"执行SQL任务"组件,执行以下语句即可:

SET sql_mode ='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES'

注意连接和"ODBC目标"的连接保持一致.

参考:

使用SSIS更新MYSQL中的记录

Writing to a MySQL database from SSIS

Connecting to MySQL from SSIS

Creating a Destination with the Script Component