etl mysql 到sqkserver_从SQL Server到MySQL的ETL实现
场景:
需要一个从SQL Server源表拉数据到MySQL目标表的SSIS ETL Package,本来一个简单的Data Flow组件就可以解决的问题,然而SSIS 2014不支持在Data flow中使用ADO.NET connection作为MySQL desitination,运行时会报错(做source connection使用没有问题),换成ODBC connection可以成功,但load速度太慢。
在以下测试表中插入260908条测试数据,然后用ODBC做Data Flow的destination,load所有数据耗时43分27秒!!
1 CREATE TABLEtblTest(2 ID BIGINT NOT NULL IDENTITY(1,1),3 Col1 NVARCHAR(30),4 Col2 NVARCHAR(30),5 Col3 NVARCHAR(30),6 Col4 NVARCHAR(30),7 Col5 NVARCHAR(30),8 Col6 DECIMAL(10,4),9 Col7 DECIMAL(10,4),10 Col8 DECIMAL(10,4),11 Col9 INT,12 Col10 DATETIME2 DEFAULTGETUTCDATE()13 )
解决方案:
将源表通过SQL Server的bcp命令导出为文件,然后在利用MySQL的LOAD DATA LOCAL INFILE命令导入目标表中。
1 --在SQL Server中创建SP如下,用以被SSIS Package调用,将源表导出至文件
2 CREATE PROCEDUREusp_ExtracttblTest3 AS
4 BEGIN
5
6 EXECsp_configure7 ‘show advanced options‘,8 1;9
10 RECONFIGURE;11
12 EXECsp_configure13 ‘xp_cmdshell‘,14 1;15
16 RECONFIGURE;17
18 DECLARE @cmd NVARCHAR(4000);19
20 SET @cmd = ‘bcp "SELECT ID,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10 FROM Test..tblTest" queryout C:/TEST/tblTest.csv -S"SQL Server IP" -U"DBUser" -P"DBUserPassword" -c -C"65001" -t","‘;21
22 EXEC master..xp_cmdshell @cmd;23
24 END
25
26 GO
SSIS Package需要两个Execute SQL Task来实现整个ETL:
Execute SQL Task 1: 调用以上存储过程,将源表导出为文件,导出260908条测试数据耗时1秒
Execute SQL Task 2: 用ADO.NET connection的方式连接到MySQL目标数据库,SQL Statement内容如下。导入所有测试数据耗时8秒
1 LOAD DATA LOCAL INFILE ‘C:/Test/tblTest.csv‘
2 INTO TABLEtblTest3 CHARACTER SETutf84 FIELDS TERMINATED BY ‘,‘
5 ESCAPED BY ‘\\‘
6 LINES TERMINATED BY ‘\r\n‘
7 (ID,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10);
改进后的ETL Package跑下来耗时总和仅需10秒!
原文:http://www.cnblogs.com/quietseason/p/6382416.html
etl mysql 到sqkserver_从SQL Server到MySQL的ETL实现相关推荐
- 从 SQL Server 到 MySQL (三):愚公移山 - 开源力量
我们用了两章文章 从 SQL Server 到 MySQL(一):异构数据库迁移 / 从 SQL Server 到 MySQL(二):在线迁移,空中换发动机 介绍我们遇到问题和解决方案. 不管是离线全 ...
- mysql在建站起什么作用_数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?...
最近一直在做博客网站,从定位主题到程序和数据库的选择,确实废了不少心思,经过细致的思考,最终将主题定位为读书方面,还有文学和学习笔记,但是对于程序和数据库问题,我一直就比较费心,因为个人是个技术小白, ...
- sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 分享上来,同时也以便记录下来以后自用. 工具名称:Mss2sql 来个操作流程: 1.首先下载工具 用户名与密码都是www.linu ...
- SQL 100+个最佳入门案例实践(覆盖Oralce、SQL Server、Mysql)之基础操作_1_检索数据
SQL基础操作_1_检索数据 目录 7.1.1 数据集 7.1.2 学生选课关系表 7.1.3 供应商关系表 7.2.1 从表中查询所有行和列 7.2.2 从表中查询部分行 7.2.3 查询满足某个条 ...
- linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...
本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: ...
- db2 mysql sql server_下文给大家介绍mysql数据库介绍,具体详情如下所示:MySQL数据库:Oracle、DB2、SQL Server、MySQL、access、mang...
下文给大家介绍mysql数据库介绍,具体详情如下所示: MySQL 数据库: Oracle.DB2.SQL Server.MySQL.access.mangodb.bigtable 关系型数据库 大型 ...
- 通过SQL Server操作MySQL的步骤和方法
在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况.以下简要介绍下用SQL Server操作MySQL的步骤和方法. 1 操作前的准备 1.1 安装MySQL驱动 想要在SQL ...
- sql server和mysql的区别是什么
开源 MySQL是一个开源关系数据库管理系统(RDBMS):而SQL Server不是开源的,是商业的. 程序 MySQL主要用C和C ++编程语言编程.SQL Server主要用C ++编程,但在C ...
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacem ...
- Oracle 数据库、Microsoft SQL Server、MySQL 数据库三种常见数据库的区别深度剖析
文章目录 前言 一.ORACLE 数据库 二.Microsoft SQL Server 数据库 三.MySQL 数据库 总结 前言 Oracle 数据库.Microsoft SQL Server.My ...
最新文章
- 【转载】linux静态链接库与动态链接库的区别及动态库的创建
- 文巾解题 1837. K 进制表示下的各位数字总和
- 自定义Matlab功能函数——10进制整数矩阵转二进制字符矩阵
- Mysql备份工具xtrabackup 8 安装图解
- nginx 目录讲解
- webform Repeater重复器、地址栏传值、Response
- VxWorks嵌入式操作系统的TrueFFS文件系统驱动开发
- Linux (Ubuntu/CentOS) 添加用户并授予sudo的权限
- Word2010-页眉中字数未满但自动换行
- 直播评论发弹幕切图功能点集合
- 营业执照在线生成_潍坊发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
- MQL5 中如何调用指标
- echarts树图tree制作家谱教程
- 宝马 OR 奥迪?NONONO,还得看我Li Auto,新款六座SUV强势来袭
- PL/SQL——员工涨工资问题
- vim 方向键和backspace乱码
- 解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接
- oracle+sql+按中文拼音排序,Oracle 中文字段进行排序的sql语句
- sku这样设置不仅降低退款投诉还可以提升转化
- 多变量微积分笔记1——偏导数