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. Wix打包系列(五) 部署数据库

    原文:Wix打包系列(五) 部署数据库 很多人在使用vs进行打包的时候,经常会为数据库部署的问题犯愁,即便是重写Installer类的方法,也不是很可靠方便,下面我们来看看在wix中如何部署数据库. ...

  2. 定义Java类的数组的问题

    定义了一个类: class Student{ private int Id; public int getId() { return Id; } public void setId(int id) { ...

  3. Linux进程间通信(九)---综合实验之有名管道通信实验

    实验目的 通过编写有名管道多路通信实验,进一步掌握管道的创建.读写等操作,同时复习使用select()函数实现管道的通信. 实验内容 这里采用管道函数创建有名管道(不是在控制台下输入命令mknod), ...

  4. Thinkphp中field和getField

    在数据库查询操作中field和getField方法是使用最频繁的.可是两者是有一定差别的.在这里记录下. field方法是用于定义要查询的字段(支持字段排除). getField方法获取数据表中的某个 ...

  5. C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象

    重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int v ...

  6. C# 简化优化if/switch 表驱动法

    表示这个很强大 字典加反射,搞定多window的switch public partial class MainWindow : Window { Dictionary<string, Type ...

  7. 第二期“晋IT”分享成长沙龙

    本期主题:微信.打造品牌个体 报名方式:关注微信.回复"我要成长" "晋IT"沙龙费用:全程免费 "晋IT"沙龙文化:共通 共融 合作共赢 ...

  8. ThinkPHP的全部配置选项

    return array( /* Dispatch设置 */ 'DISPATCH_ON' => true, // 是否启用Dispatcher // URL模式: 0 普通模式 1 PATHIN ...

  9. Boosting算法简介

    一.Boosting算法的发展历史 Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boos ...

  10. PHP计算中文字符串长度 、截取相应中文字符串

    PHP计算字符串长度     及其   截取相应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,' ...