SSIS常用的包—大量插入任务(Bulk Insert task)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 大量插入任务允许像BULK INSERT语句或者bcp.exe命令行工具一样从txt文件(也叫做平面文件)中插入数据。这个task工具箱中的Control Flow Items中,它不会产生数据流。这种task的一个缺点是在插入的时候不允许任何形式的数据转换。

大量插入任务允许像BULK INSERT语句或者bcp.exe命令行工具一样txt文件(也叫做平面文件)中插入数据。这个task工具箱中的Control Flow Items中,它不会产生数据流。这种task的一个缺点是在插入的时候不允许任何形式的数据转换。同时,它可以以最快的速度向SQL Server中写入大量的数据,不论数据量是的是小。

 

创建一个大量插入任务,然后设置它的属性,打开编辑页面(图3-2)。像大多数task一样编辑页面可以命名,描述这个task。注意命名要说明这个task完成的任务就像“准备存储” Prepare Staging,这将会帮助在以后的部署和调试工作。

 

图3-2

最重要的配置是连接Connection,在Connection编辑页面中允许你设置数据的源和目的地。从下拉列表里面选择数据的目的地,选择一个数据表。当设置了连接之后,还需要在File下拉列表中设置连接文件的名字。源和目的连接都使用Connection Manager。如果还没有简历这样的共享连接,需要从下拉列表中选择<New Connection…>新建一个连接。

设置好连接之后,可以设置插入数据的文件的类型和它的分割符号。选择UseFile或者从Format下拉列表框中选择。如果你选择User File,你将选择一个大量插入文件的格式,它告诉task文件时如何组织的(文本的行间隔符)。通常选择Format下拉列表指定文件的格式。选择项中设置间隔符。大多数情况下,默认的间隔符用来指定文件格式。行间隔符columndelimiter执行行之间的间隔符号默认情况下是制表符分割,也有的是逗号分隔。

注意。格式文件一定要在SQL Server上,保证选项生效。如果在本地SQL Server上没有,也可以使用远端访问路径(\\MachineName\ShareName\FileName.csv

 Option标签页面中,可以设置几个不为人知的选项。可以为源文件设置内码列表,默认选项是RAW。数据文件类型选项可以指定源文件的种类。选项值包含char, native, widechar, and widenative。大体上说是char类型,有时也会有文本文档类型。你将会看到使用命令行语句参数-n调用bcp.exe创建的文件。

Option标签页面中如果想只插入数据行忽略表头也可以设置first rowlast rowBatchSize选择项显示一次何以写入多少数据。如果设置为0,是一次将全部记录写入。如果记录多于100000,可以设置该值为50000.

在选项Option的下拉列表框中包含了5个可选择的值

· Check Constraints: 这个选项将在执行时检查表和列中的约束,这个选项是唯一默认为true的选项。

· Keep Nulls: 这个选择项将文本中所有的空白替换成NULL然后写入SQL Server

· Table Lock: 这个选择项将确保在执行task的时候目标表不能被插入和更新,这个设置将加快bulk insert,但是会给其他的更新造成中断。设置时保证bulk insert执行的时候没有其他的task正在执行。

· Fire Triggers: 默认情况下,为保证执行速度bulk insert将忽略触发器,设置此选择项,task在执行bulk insert的时候不再忽略触犯器。

Options标签选项中还有其他的选择项,SortedData选项指定插入数据的时候指定按照一个行的排列循序插入。默认设置是nothing,如果愿意, 可以选择一个你需要的排序的列的列名。MaxErrors选择项指定在task停止执行之前可以忍受的最大的错误个数。默认情况下,只要有一行没有正常插入整个task将失败。

注意:Bulk Insert 任务不会记录出现错误的行,如果想把这种异常的行记录到一个文件或表中,可以选择Data Flow任务。

 

 

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
数据库
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
|
4月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
34 0
|
11月前
|
SQL 关系型数据库 数据库
如何实现update select 语句
​ 这次的文章出现也是因为这样一个类似的需求,个人需要把一个30万行(后续会发文介绍常见的处理手段)的数据文件入库,同时需要将部分字段迁移到另一张表,两个表之间通过两个字段进行and匹配。
158 0
Zp
|
SQL
在写左关联时SQL语句出现 Duplicate column name 'NAME'名字重复错误解决方法
在写左关联时SQL语句出现 Duplicate column name 'NAME'名字重复错误解决方法
Zp
362 0
|
SQL Oracle 关系型数据库
DBeaver同时执行多条insert into报错处理
DBeaver同时执行多条insert into报错处理
DBeaver同时执行多条insert into报错处理
|
关系型数据库 MySQL 数据库
插入命令 insert 和查询命令 select 的组合使用|学习笔记
快速学习插入命令 insert 和查询命令 select 的组合使用
1666 0
|
SQL
在同一个workprocess里对两张表分别使用online update和update function module update
在同一个workprocess里对两张表分别使用online update和update function module update
127 0
在同一个workprocess里对两张表分别使用online update和update function module update
|
SQL Oracle 网络协议
一条UPDATE从生到死的整个过程的深入解析
这是曾经Oracle原厂的一位兄弟问我的一个问题,后来也有些人问起这个问题: 用ORACLE内部原理描述以下过程: 1、sqlplus gyj/gyj@orcl 2、updatet_gyj set name='gyj1' where id=1; 3、commit; 4、exit 一看这个问题是不是灰常复杂,阿里系的童鞋特别喜欢用类似这样的题目面试人,从中可以快速的判断你是哪个级别的DBA(初级/中级/高级),在这个问题上我给大家抛砖迎玉,由于能力有限只能做简单解释,欢迎大家一起参与讨论并补充。嘿嘿!这是个很理论的东东希望对大家在处理实际问题的时候有一点点帮助。
一条UPDATE从生到死的整个过程的深入解析