BULK INSERT

  在SQL Server中,BULK INSERT是用来将外部文件以一种特定的格式加载到数据库表的T-SQL命令。该命令使开发人员能够直接将数据加载到数据库表中,而不需要使用类似于Integration Services这样的外部程序。虽然BULK INSERT不允许包含任何复杂的逻辑或转换,但能够提供与格式化相关的选项,并告诉我们导入是如何实现的。BULK INSERT有一个使用限制,就是只能将数据导入SQL Server。

  插入数据

  下面的例子能让我们更好的理解如何使用BULK INSERT命令。首先,我们来创建一个名为Sales的表,我们将要把来自文本文件的数据插入到这个表中。

  CREATE TABLE [dbo].[Sales]
  (
  [SaleID] [int],
  [Product] [varchar](10) NULL,
  [SaleDate] [datetime] NULL,
  [SalePrice] [money] NULL
  )

  当我们使用BULK INSERT命令来插入数据时,不要启动目标表中的触发器,因为触发器会减缓数据导入的进程。

  在下一个例子中,我们将在Sales表上创建触发器,用来打印插入到表中的记录的数量。

  CREATE TRIGGER tr_Sales
  ON Sales
  FOR INSERT
  AS
  BEGIN
  PRINT CAST(@@ROWCOUNT AS VARCHAR(5)) + ' rows Inserted.'
  END

  这里我们选择文本文件作为源数据文件,文本文件中的值通过逗号分割开。该文件包含1000条记录,而且其字段和Sales表的字段直接关联。由于该文本文件中的值是由逗号分割开的,我们只需要指定FIELDTERMINATOR即可。注意,当下面这条语句运行时,我们刚刚创建的触发器并没有启动:

  BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',')

  当我们要的数据量非常大时,有时候就需要启动触发器。下面的脚本使用了FIRE_TRIGGERS选项来指明在目标表上的任何触发器都应当启动:

  BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS)

  我们可以使用BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量。在前一个例子中,所有的1000条记录都在同一个事务中被插入到目标表里。下面的例子,我们将BATCHSIZE参数设置为2,也就是说要对该表执行500次独立的插入事务。这也意味着启动500次触发器,所以将有500咯打印指令输出到屏幕上。
   BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS, BATCHSIZE = 2)

  BULK INSERT不仅仅可以应用于SQL Server 2005的本地映射驱动器。下面的语句将告诉我们如何从名为FileServer的服务器的D盘中将SalesText文件的数据导入。

  BULK INSERT Sales FROM 'FileServerD$SalesText.txt' WITH (FIELDTERMINATOR = ',')

  有时候,我们在执行导入操作以前,最好能先查看一下将要输入的数据。下面的语句在使用BULK命令时,使用了OPENROWSET函数,以便从SalesText文本文件中读取源数据。该语句同时还需要使用一个格式文件(此处没有列出文件的具体内容)来表明该文本文件中的数据格式。

  SELECT *
  FROM OPENROWSET(BULK 'c:SalesText.txt' ,
  FORMATFILE='C:SalesFormat.Xml'
  ) AS mytable;
  GO

什么是BULK INSERT相关推荐

  1. bulkwrite 批量插入_SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg ( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位 ...

  2. navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入

    SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形式. ① 第一种形式无需指定 ...

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

    大量插入任务允许像BULK INSERT语句或者bcp.exe命令行工具一样从txt文件(也叫做平面文件)中插入数据.这个task工具箱中的Control Flow Items中,它不会产生数据流.这 ...

  4. sql server 2005 T-SQL BULK INSERT (Transact-SQL)

    以用户指定的格式将数据文件导入数据库表或视图. Transact-SQL 语法约定 语法 BULK INSERT [ database_name . [ schema_name ] . | schem ...

  5. azure 导入 bak_如何使用BULK INSERT在本地和Azure中导入数据

    azure 导入 bak 介绍 (Introduction) BULK INSERT is a popular method to import data from a local file to S ...

  6. 用BULK INSERT命令导入数据详解

    转载而来.来源已经不清楚了. 如果你从事与数据库相关的工作,有可能会涉及到将数据从外部数据文件插入倒SQL Server的操作.本文将为大家演示如何利用BULK INSERT命令来导入数据,并讲解怎样 ...

  7. MyBatis批量插入(sqlserver BULK INSERT)

    MyBatis批量插入: 1. foreach方式 2.sqlsession + sqlsession.flushStatements方式: //        SqlSession sqlSessi ...

  8. 使用BULK INSERT高效导入大量数据到SQL Server数据库

    源数据 (文本文件) 下载了大量的股票历史数据, 都是文本格式的: 每个文件第一行包含股票代码, 股票名称, 数据类型. 第二行是数据列的名称: 数据表 在数据库中新建了一个数据表TestStock, ...

  9. BULK INSERT如何将大量数据高效地导入SQL Server

    转载自:http://database.51cto.com/art/201108/282631.htm BULK INSERT如何将大量数据高效地导入SQL Server 本文我们详细介绍了BULK ...

  10. BULK INSERT如何将大量数据高效地导入SQL Server(转)

    在实际的工作需要中,我们有时候需将大量的数据导入到数据库中.这时候我们不得不考虑的就是效率问题.本文我们就介绍了一种将大量数据高效地导入SQL Server数据库的方法,该方法是使用BULK INSE ...

最新文章

  1. Linux网络编程实例分析
  2. POJ - 1509 Glass Beads
  3. Python文件操作IO open 读-取-写
  4. Linux高性能server编程——高级I/O函数
  5. (不误正业)鼓励做题的时间陷阱
  6. python Requests登录GitHub
  7. Pytorch还是TensorFlow?顶会带你览趋势
  8. Enterprise Library +Caliburn.Micro+WPF CM框架下使用企业库验证,验证某一个属性,整个页面的文本框都变红的原因...
  9. 数据挖掘:数据清洗、转换和消减
  10. iOS 利用UIPresentationController自定义转场动画
  11. 用html语言写一个环形,html5环形流程图可添加流程图代码
  12. Linux查看最后一页日志,linux常用查看文件或日志命令
  13. 《钻哥学管理之现代管理学》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=技术+业务+管理+现代管理学+决策+组织+人事+领导+激励+协调+控制+系统分析+立钻哥哥+==)
  14. 固态硬盘寿命测试一年半 寿命指数超乎想象 连写2500TB终于全挂
  15. 对于拉格朗日乘数法的个人理解
  16. 我的世界里 有你还不知道的秘密 边走边学习 且行且珍惜吧
  17. python ——时间间隔
  18. Android反编译工具与实践
  19. 让小朋友学会LED点阵显示
  20. python把中文文档变为拼音

热门文章

  1. 谷歌付费 php是什么区,谷歌地图上显示地区的详细信息
  2. scraino编程流程图_青岛Scraino编程课程
  3. python keyboard方法_python 偷懒技巧――使用 keyboard 录制键盘事件
  4. 《建筑业营改增四川省建设工程计价依据调整办法》的通知(续)〔2016〕349
  5. unity Test Tools 测试
  6. 编译Atlas 2.2.0 时报错:org.apache.atlas:atlas-buildtools:jar:1.0 was not found (已解决)
  7. 千峰培训_前端_day04_js与斗鱼机器人
  8. 2022年7月学习计划
  9. Javascript的HTML DOM (文档对象模型)
  10. AI王者荣耀(python+minitouch+scrcpy)Transformer