Bulk Insert具体订单

BULK INSERT与用户指定的格式的数据文件复制到数据库表或视图。

语法:

  1. BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' }
  2. WITH  (
  3. [ BATCHSIZE [ = batch_size ] ],
  4. [ CHECK_CONSTRAINTS ],
  5. [ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ],
  6. [ DATAFILETYPE [ = 'char' | 'native'| 'widechar' | 'widenative' ] ],
  7. [ FIELDTERMINATOR [ = 'field_terminator' ] ],
  8. [ FIRSTROW [ = first_row ] ],
  9. [ FIRE_TRIGGERS ],
  10. [ FORMATFILE = 'format_file_path' ],
  11. [ KEEPIDENTITY ],
  12. [ KEEPNULLS ],
  13. [ KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ],
  14. [ LASTROW [ = last_row ] ],
  15. [ MAXERRORS [ = max_errors ] ],
  16. ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ],
  17. [ ROWS_PER_BATCH [ = rows_per_batch ] ],
  18. [ ROWTERMINATOR [ = 'row_terminator' ] ],
  19. [ TABLOCK ],
  20. )
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 的server指定有效路径。假设 data_file 是远程文件,则请指定通用命名规则 (UNC) 名称。

BATCHSIZE [ = batch_size ]
指定批处理中的行数。

每一个批处理作为一个事务复制至server。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 时使用。导致整个数据文件作为单个事务发送给server。server依据 rows_per_batch 优化大容量装载。

默认情况下。ROWS_PER_BATCH 未知。

ROWTERMINATOR [ = 'row_terminator' ]
指定对于 char 和 widechar 数据文件要使用的行终止符。

默认值是 /n(换行符)。

TABLOCK
指定对于大容量复制操作期间获取一个表级锁。假设表没有索引而且指定了 TABLOCK。则该表能够同一时候由多个client装载。默认情况下。锁定行为是由表选项 table lock on bulk load 决定的。

仅仅在大容量复制操作期间控制锁会降低表上的锁争夺,极大地提高性能。凝视BULK INSERT 语句能在用户定义事务中运行。

对于一个用 BULK INSERT 语句和 BATCHSIZE 子句将数据装载到使用多个批处理的表或视图中的用户定义事务来说,回滚它将回滚全部发送给 SQL Server 的批处理。

权限仅仅有 sysadmin 和 bulkadmin 固定server角色成员才干运行 BULK INSERT。

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

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

本例指定 FIRE_TRIGGERS 參数。

  1. BULK INSERT Northwind.dbo.[Order Details]   FROM 'f:/orders/lineitem.tbl'
  2. WITH (
  3. FIELDTERMINATOR = '|',
  4. ROWTERMINATOR = ':/n',
  5. FIRE_TRIGGERS
  6. )
  7. =============================================================
  8. BULK INSERT
  9. [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]
  10. FROM 'data_file'
  11. WITH
  12. (
  13. [ [ , ] BATCHSIZE = batch_size ]    --BATCHSIZE指令来设置在单个事务中能够插入到表中的记录的数量
  14. [ [ , ] CHECK_CONSTRAINTS ]     --指定在大容量导入操作期间,必须检查全部对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项。则全部 CHECK 和 FOREIGN KEY 约束都将被忽略。而且在此操作之后表的约束将标记为不可信。
  15. [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]  --指定该数据文件里数据的代码页
  16. [ [ , ] DATAFILETYPE =
  17. { 'char' | 'native'| 'widechar' | 'widenative' } ]  --指定 BULK INSERT 使用指定的数据文件类型值运行导入操作。
  18. [ [ , ] FIELDTERMINATOR = 'field_terminator' ]  --标识分隔内容的符号
  19. [ [ , ] FIRSTROW = first_row ]    --指定要载入的第一行的行号。

    默认值是指定数据文件里的第一行

  20. [ [ , ] FIRE_TRIGGERS ]     --是否启动触发器
  21. [ [ , ] FORMATFILE = 'format_file_path' ]
  22. [ [ , ] KEEPIDENTITY ]   --指定导入数据文件里的标识值用于标识列
  23. [ [ , ] KEEPNULLS ]    --指定在大容量导入操作期间空列应保留一个空值。而不插入用于列的不论什么默认值
  24. [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
  25. [ [ , ] LASTROW = last_row ]   --指定要载入的最后一行的行号
  26. [ [ , ] MAXERRORS = max_errors ]   --指定同意在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。
  27. [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]  --指定数据文件里的数据怎样排序
  28. [ [ , ] ROWS_PER_BATCH = rows_per_batch ]
  29. [ [ , ] ROWTERMINATOR = 'row_terminator' ]   --标识分隔行的符号
  30. [ [ , ] TABLOCK ]     --指定为大容量导入操作持续时间获取一个表级锁
  31. [ [ , ] ERRORFILE = 'file_name' ]   --指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。

  32. )]
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 行集的行的文件。 )]

以下写个个简单的应用样例

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

Bulk Insert具体订单的更多相关文章

  1. Bulk Insert命令具体

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

  2. Bulk Insert 高效快速插入数据

    BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中. 语法: BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_nam ...

  3. 使用“bulk insert ”进行批量插入数据

    本文转自csdn中文章,再次感谢他给我们分享. Bulk Insert命令详细 BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中.语法: BULK INSERT [ [ 'da ...

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

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

  5. 笔记整理之 Bulk Insert

    之前2篇日志整理了BCP大致的用法,这次整理一下它的兄弟 Bulk Insert 的写法以及和bcp那边的结合的用法. 首先,Bulk Insert 语句要在连接了Sql Server 服务器之后才执 ...

  6. SQL Server Bulk Insert批量数据导入

    SQL Server的Bulk Insert语句可以将本地或远程的数据文件批量导入到数据库中,速度非常的快.远程文件必须共享才行,文件路径须使用通用约定(UNC)名称,即"\\服务器名或IP ...

  7. Bulk Insert的用法 .

    /******* 导出到excel */EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S&quo ...

  8. Bulk Insert & BCP执行效率对比(续)

    上回由于磁盘空间(约70G)不足,导致Bulk Insert和BCP导入中途失败:今次统一一些操作,以得到Bulk insert与BCP分别执行效率: 1. 15435390笔数据,21.7G csv ...

  9. Bulk Insert & BCP执行效率对比

    我们以BCP导出的CSV数据文件,分别使用Bulk insert与BCP导入数据库,对比两种方法执行效率 备注:导入目标表创建了分区聚集索引 1.BCP导出csv数据文件 数据量:15000000行, ...

随机推荐

  1. windows 2003 自动安全设置

    @echo offecho.echo.echo.echo 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓echo.echo.echo windows 2003 自动安全设置程序 echo. ec ...

  2. Cordova CLI源码分析(四)——创建工程

    在第一篇分析我们曾经举例,创建一个新工程, cordova create hello hellotest com.xxx.hellotest cli.js文件分析命令行参数后,会走到 else if  ...

  3. Cocos2d-x 2地图步行实现:SPFA算法

    本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 上一节<Cocos2d-x 地图行走的实现1:图论与Dijkstra算法> ...

  4. Java EE (10) - 资源服务器的整合

    加密(Encryption)和数字签名(Digital Signature)通常被用于保护通讯--加密用来防止数据传输过程中的窃听--数字签名用来防止数据传输过程中的篡改 JDBC: 整合关系型数据库 ...

  5. Akka边学边写(3)-- ByteString介绍

    Akka的IO层设计能够參考这篇文档,本文简介一下ByteString的设计. Immutable消息 Actor之间是通过消息沟通的.但为了避免同步问题,消息必须是Immutable. 因此.Akk ...

  6. hdu5384(trie树)

    hdu5384 给定n个字符串Ai 给定m个字符串Bi 问所有的Bi在每个Ai中出现了多少次 很显然,对Bi建Trie图,然后每次用Ai去匹配的时候,不断查找当前匹配串的最长后缀,这样就能找到答案了 ...

  7. Cocos2d-x 脚本语言Lua中的面向对象

    Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...

  8. MySQL在大数据Limit使用

    它已被用于Oracle一世.但今天,很惊讶,MySQL在对数量级的性能,甚至差距如此之大不同的顺序相同的功能. 看看表ibmng(id,title,info)  只要  id key 指数title ...

  9. C# 如何获取某用户的“我的文档”的目录

    Console.WriteLine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); System.E ...

  10. HDU 1856 More is better(并查集+离散化)

    题目地址:HDU 1856 水题.因为标号范围太大,而数据数仅仅有10w,所以要先进行离散化.然后就是裸的并查集了. 代码例如以下: #include <iostream> #includ ...