Bulk Insert命令详细

BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中。

语法:

BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }
WITH  (   [ BATCHSIZE [ = batch_size ] ],       [ CHECK_CONSTRAINTS ],           [ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ],   [ DATAFILETYPE [ = 'char' | 'native'| 'widechar' | 'widenative' ] ],               [ FIELDTERMINATOR [ = 'field_terminator' ] ],   [ FIRSTROW [ = first_row ] ],   [ FIRE_TRIGGERS ],   [ FORMATFILE = 'format_file_path' ],   [ KEEPIDENTITY ],   [ KEEPNULLS ],   [ KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ],      [ LASTROW [ = last_row ] ],   [ MAXERRORS [ = max_errors ] ],   [ ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ],     [ ROWS_PER_BATCH [ = rows_per_batch ] ],   [ ROWTERMINATOR [ = 'row_terminator' ] ],             [ TABLOCK ],
)  

BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }
WITH  (  [ BATCHSIZE [ = batch_size ] ],      [ CHECK_CONSTRAINTS ],          [ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ],  [ DATAFILETYPE [ = 'char' | 'native'| 'widechar' | 'widenative' ] ],              [ FIELDTERMINATOR [ = 'field_terminator' ] ],  [ FIRSTROW [ = first_row ] ],  [ FIRE_TRIGGERS ],  [ FORMATFILE = 'format_file_path' ],  [ KEEPIDENTITY ],  [ KEEPNULLS ],  [ KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ],     [ LASTROW [ = last_row ] ],  [ MAXERRORS [ = max_errors ] ],  [ ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ],    [ ROWS_PER_BATCH [ = rows_per_batch ] ],  [ ROWTERMINATOR [ = 'row_terminator' ] ],            [ TABLOCK ],
) 

参数: 
'database_name'  
是包含指定表或视图的数据库的名称。如果未指定,则系统默认为当前数据库。

'owner'  
是表或视图所有者的名称。当执行大容量复制操作的用户拥有指定的表或视图时,owner 是可选项。如果没有指定 owner 并且执行大容量复制操作的用户不拥有指定的表或视图,则 Microsoft® SQL Server? 将返回错误信息并取消大容量复制操作。

'table_name'  
是大容量复制数据于其中的表或视图的名称。只能使用那些所有的列引用相同基表所在的视图。有关向视图中复制数据的限制的更多信息,请参见 INSERT。

'data_file'  
是数据文件的完整路径,该数据文件包含要复制到指定表或视图的数据。BULK INSERT 从磁盘复制数据(包括网络、软盘、硬盘等)。 data_file 必须从运行 SQL Server 的服务器指定有效路径。如果 data_file 是远程文件,则请指定通用命名规则 (UNC) 名称。

BATCHSIZE [ = batch_size ]  
指定批处理中的行数。每个批处理作为一个事务复制至服务器。SQL Server提交或回滚(在失败时)每个批处理的事务。默认情况下,指定数据文件中的所有数据是一个批处理。

CHECK_CONSTRAINTS  
指定在大容量复制操作中检查 table_name 的任何约束。默认情况下,将会忽略约束。

CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]  
指定该数据文件中数据的代码页。仅当数据含有字符值大于 127 或小于 32 的 char、varchar 或 text 列时,CODEPAGE 才是适用的。CODEPAGE 值 描述 ACP char、varchar 或 text 数据类型的列从 ANSI/Microsoft Windows® 代码页 ISO 1252 转换为 SQL Server 代码页。 OEM(默认值) char、varchar 或 text 数据类型的列被从系统 OEM 代码页转换为 SQL Server 代码页。 RAW 并不进行从一个代码页到另一个代码页的转换;这是最快的选项。 code_page 特定的代码页号码,例如 850。

DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative' } ]  
指定 BULK INSERT 使用指定的默认值执行复制操作。DATAFILETYPE 值 描述 char(默认值) 从含有字符数据的数据文件执行大容量复制操作。 native 使用 native(数据库)数据类型执行大容量复制操作。要装载的数据文件由大容量复制数据创建,该复制是用 bcp 实用工具从 SQL Server 进行的。 widechar 从含有 Unicode 字符的数据文件中执行大容量复制操作。 widenative 执行与 native 相同的大容量复制操作,不同之处是 char、varchar 和 text 列在数据文件中存储为 Unicode。要装载的数据文件由大容量复制数据创建,该复制是用 bcp 实用工具从 SQL Server 进行的。该选项是对 widechar 选项的一个更高性能的替代,并且它用于使用数据文件从一个运行 SQL Server 的计算机向另一个计算机传送数据。当传送含有 ANSI 扩展字符的数据时,使用该选项以便利用 native 模式的性能。

FIELDTERMINATOR [ = 'field_terminator' ]  
指定用于 char 和 widechar 数据文件的字段终止符。默认的字段终止符是 /t(制表符)。

FIRSTROW [ = first_row ]  
指定要复制的第一行的行号。默认值是 1,表示在指定数据文件的第一行。

FIRE_TRIGGERS  
指定目的表中定义的任何插入触发器将在大容量复制操作过程中执行。如果没有指定 FIRE_TRIGGERS,将不执行任何插入触发器。

FORMATFILE [ = 'format_file_path' ]  
指定一个格式文件的完整路径。格式文件描述了含有存储响应的数据文件,这些存储响应是使用 bcp 实用工具在相同的表或视图中创建的。格式文件应该用于以下情况: 数据文件含有比表或视图更多或更少的列。列使用不同的顺序。列分割符发生变化。数据格式有其它的改变。通常,格式文件通过 bcp 实用工具创建并且根据需要用文本编辑器修改。有关更多信息,请参见 bcp 实用工具。

KEEPIDENTITY  
指定标识列的值存在于导入文件中。如果没有指定 KEEPIDENTITY,在导入的数据文件中此列的标识值将被忽略,并且 SQL Server 将根据表创建时指定的种子值和增量值自动赋给一个唯一的值。假如数据文件不含该表或视图中的标识列,使用一个格式文件来指定在导入数据时,表或视图中的标识列应被忽略;SQL Server 自动为此列赋予唯一的值。有关详细信息,请参见 DBCC CHECKIDENT。

KEEPNULLS  
指定在大容量复制操作中空列应保留一个空值,而不是对插入的列赋予默认值。

KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]  
指定每个批处理中数据的近似千字节数(KB)。默认情况下,KILOBYTES_PER_BATCH 未知。

LASTROW [ = last_row ]  
指定要复制的最后一行的行号。默认值是 0,表示指定数据文件中的最后一行。

MAXERRORS [ = max_errors ]  
指定在大容量复制操作取消之前可能产生的错误的最大数目。不能被大容量复制操作导入的每一行将被忽略并且被计为一次错误。如果没有指定 max_errors,默认值为 0。

ORDER ( { column [ ASC | DESC ] } [ ,...n ] )  
指定数据文件中的数据如何排序。如果装载的数据根据表中的聚集索引进行排序,则可以提高大容量复制操作的性能。如果数据文件基于不同的顺序排序,或表中没有聚集索引,ORDER 子句将被忽略。给出的列名必须是目的表中有效的列。默认情况下,大容量插入操作假设数据文件未排序。n是表示可以指定多列的占位符。

ROWS_PER_BATCH [ = rows_per_batch ]  
指定每一批处理数据的行数(即 rows_per_bacth)。当没有指定 BATCHSIZE 时使用,导致整个数据文件作为单个事务发送给服务器。服务器根据 rows_per_batch 优化大容量装载。默认情况下,ROWS_PER_BATCH 未知。

ROWTERMINATOR [ = 'row_terminator' ]  
指定对于 char 和 widechar 数据文件要使用的行终止符。默认值是 /n(换行符)。

TABLOCK  
指定对于大容量复制操作期间获取一个表级锁。如果表没有索引并且指定了 TABLOCK,则该表可以同时由多个客户端装载。默认情况下,锁定行为是由表选项 table lock on bulk load 决定的。只在大容量复制操作期间控制锁会减少表上的锁争夺,极大地提高性能。注释BULK INSERT 语句能在用户定义事务中执行。对于一个用 BULK INSERT 语句和 BATCHSIZE 子句将数据装载到使用多个批处理的表或视图中的用户定义事务来说,回滚它将回滚所有发送给 SQL Server 的批处理。权限只有 sysadmin 和 bulkadmin 固定服务器角色成员才能执行 BULK INSERT。

示例本例从指定的数据文件中导入订单详细信息,该文件使用竖杠 (|) 字符作为字段终止符,使用 |/n 作为行终止符。

BULK INSERT Northwind.dbo.[Order Details]   FROM 'f:/orders/lineitem.tbl'
WITH (   FIELDTERMINATOR = '|',            ROWTERMINATOR = '|/n'
)  
BULK INSERT Northwind.dbo.[Order Details]   FROM 'f:/orders/lineitem.tbl'
WITH (  FIELDTERMINATOR = '|',           ROWTERMINATOR = '|/n'
)  

本例指定 FIRE_TRIGGERS 参数

BULK INSERT Northwind.dbo.[Order Details]   FROM 'f:/orders/lineitem.tbl'
WITH (    FIELDTERMINATOR = '|',           ROWTERMINATOR = ':/n',           FIRE_TRIGGERS
)
=============================================================
BULK INSERT    [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]    FROM 'data_file'    [ WITH    (    [ [ , ] BATCHSIZE = batch_size ]    --BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量   [ [ , ] CHECK_CONSTRAINTS ]     --指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]  --指定该数据文件中数据的代码页   [ [ , ] DATAFILETYPE =    { 'char' | 'native'| 'widechar' | 'widenative' } ]  --指定 BULK INSERT 使用指定的数据文件类型值执行导入操作。   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]  --标识分隔内容的符号   [ [ , ] FIRSTROW = first_row ]    --指定要加载的第一行的行号。默认值是指定数据文件中的第一行   [ [ , ] FIRE_TRIGGERS ]     --是否启动触发器   [ [ , ] FORMATFILE = 'format_file_path' ]    [ [ , ] KEEPIDENTITY ]   --指定导入数据文件中的标识值用于标识列   [ [ , ] KEEPNULLS ]    --指定在大容量导入操作期间空列应保留一个空值,而不插入用于列的任何默认值   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]    [ [ , ] LASTROW = last_row ]   --指定要加载的最后一行的行号   [ [ , ] MAXERRORS = max_errors ]   --指定允许在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]  --指定数据文件中的数据如何排序   [ [ , ] ROWS_PER_BATCH = rows_per_batch ]    [ [ , ] ROWTERMINATOR = 'row_terminator' ]   --标识分隔行的符号   [ [ , ] TABLOCK ]     --指定为大容量导入操作持续时间获取一个表级锁   [ [ , ] ERRORFILE = 'file_name' ]   --指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。   )] 
BULK INSERT Northwind.dbo.[Order Details]   FROM 'f:/orders/lineitem.tbl'
WITH (   FIELDTERMINATOR = '|',          ROWTERMINATOR = ':/n',          FIRE_TRIGGERS
)
=============================================================
BULK INSERT   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]   FROM 'data_file'   [ WITH   (   [ [ , ] BATCHSIZE = batch_size ]    --BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量  [ [ , ] CHECK_CONSTRAINTS ]     --指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。  [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]  --指定该数据文件中数据的代码页  [ [ , ] DATAFILETYPE =   { 'char' | 'native'| 'widechar' | 'widenative' } ]  --指定 BULK INSERT 使用指定的数据文件类型值执行导入操作。  [ [ , ] FIELDTERMINATOR = 'field_terminator' ]  --标识分隔内容的符号  [ [ , ] FIRSTROW = first_row ]    --指定要加载的第一行的行号。默认值是指定数据文件中的第一行  [ [ , ] FIRE_TRIGGERS ]     --是否启动触发器  [ [ , ] FORMATFILE = 'format_file_path' ]   [ [ , ] KEEPIDENTITY ]   --指定导入数据文件中的标识值用于标识列  [ [ , ] KEEPNULLS ]    --指定在大容量导入操作期间空列应保留一个空值,而不插入用于列的任何默认值  [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]   [ [ , ] LASTROW = last_row ]   --指定要加载的最后一行的行号  [ [ , ] MAXERRORS = max_errors ]   --指定允许在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。  [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]  --指定数据文件中的数据如何排序  [ [ , ] ROWS_PER_BATCH = rows_per_batch ]   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   --标识分隔行的符号  [ [ , ] TABLOCK ]     --指定为大容量导入操作持续时间获取一个表级锁  [ [ , ] ERRORFILE = 'file_name' ]   --指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。  )]  

下面写个个简单的应用例子

bulk insert xsxt.dbo.tabletest from 'c:/data.txt'  with(   FIELDTERMINATOR=',',   ROWTERMINATOR='/n'
)

[数据库]Bulk Insert命令详细相关推荐

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

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

  2. Bulk Insert:将文本数据(csv和txt)导入到数据库中

    将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...

  3. BULK INSERT用法详解,文本导入SQL,字段数量不等实例.

    Bulk Insert命令详解 BULK INSERT 以用户指定的格式复制一个数据文件至数据库表或视图中. 语法 BULK INSERT [ [ 'database_name'.][ 'owner' ...

  4. SQL Server中采用BULK INSERT实现大数据量文本文件批量导入

    SQL语句: BULK   INSERT   dbo.table        FROM   'e:/test.tbl '        WITH                (           ...

  5. 什么是BULK INSERT

    BULK INSERT 在SQL Server中,BULK INSERT是用来将外部文件以一种特定的格式加载到数据库表的T-SQL命令.该命令使开发人员能够直接将数据加载到数据库表中,而不需要使用类似 ...

  6. mysql数据基本指令_mysql数据库常用命令(详细)

    mysql数据库常用命令(详细) *************************************************** windows下mysql的启动与停止 启动MYSQL服务 n ...

  7. Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略

    Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份.差异备份.日志备份).还原.删除.修改数据库等案例)之详细攻略 目录 数据库管理 ...

  8. linux维护rpm 数据库,Linux运维知识之linux rpm命令详细介绍

    本文主要向大家介绍了Linux运维知识之linux rpm命令详细介绍,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 虽然现在N多人都使用yum去替代rpm了,但是rpm在一些 ...

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

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

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

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

最新文章

  1. train,dev,test数据集作用
  2. android调用webservice传参数,android调用webservice接口获取信息
  3. django导入mysql_django如何直接对数据库进行插入操作?
  4. UE4_屏幕位置与世界位置的相互转化
  5. 什么叫前复权。什么叫后复权。什么是不复权
  6. 观后感|当幸福来敲门 The Pursuit of Happyness
  7. GoLand Jetbrain工具使用
  8. Win10将绿色软件添加到开始菜单
  9. 从专家系统到知识图谱(好文)
  10. php网页播放器源码免费,基于Flowplayer打造一款免费的WEB视频播放器附源码
  11. 【Excel】如何使用RegexString正则表达式
  12. Kafka+Storm+HBase项目Demo(5)--topology,spout,bolt使用
  13. delphi源码转换为C++ Builder源码
  14. VB 任意随机数(N-M)的通用函数(单取、多取存入数组、排序等功能) 内附随机数介绍
  15. canvas孙悟空脚踩白云今年是猴年
  16. python json安装_Python JSON - Python 基础教程 - 自强学堂
  17. 用Weex实现新闻类app详情页是怎样一种体验?
  18. vue高德多条轨迹导航+带途径节点标注+各路线颜色区别
  19. 使用NuGet管理C++项目的依赖库
  20. 计算机英语pork,英语:pork的用法总结大全

热门文章

  1. 【算法基础一】字符编码分类
  2. PDMS二次开发应用案例——Code Interface
  3. 实训代码分享java毕业设计_物流配送管理系统
  4. dkplayer 延迟_阿里云播放器SDK使用说明
  5. c语言标准流程图,c语言设计流程图!设计流程图
  6. 最常见的12道计算机基础面试题
  7. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解
  8. visio设置网络拓扑图
  9. unity3D汉化包Localization,我的软件是unity3D 2018.4.8c3亲测有效
  10. linux系统如何查看tomcat版本,【Linux查看tomcat版本】