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 )

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 )

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 )

参数:

'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 作为行终止符。

Sql代码

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')

BULK INSERT Northwind.dbo.[Order Details] FROM'f:/orders/lineitem.tbl'WITH (

FIELDTERMINATOR= '|',

ROWTERMINATOR= '|/n')

本例指定 FIRE_TRIGGERS 参数。

Sql代码

1 BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'

2 WITH (3 FIELDTERMINATOR = '|',4 ROWTERMINATOR = ':/n',5 FIRE_TRIGGERS6 )7 =============================================================

8 BULK INSERT9 [ database_name . [ schema_name ] . | schema_name . ] [ table_name |view_name ]10 FROM 'data_file'

11 [ WITH12 (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 )]

1 BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'

2 WITH (3 FIELDTERMINATOR = '|',4 ROWTERMINATOR = ':/n',5 FIRE_TRIGGERS6 )7 =============================================================

8 BULK INSERT9 [ database_name . [ schema_name ] . | schema_name . ] [ table_name |view_name ]10 FROM 'data_file'

11 [ WITH12 (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 )]33 BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'

34 WITH (35 FIELDTERMINATOR = '|',36 ROWTERMINATOR = ':/n',37 FIRE_TRIGGERS38 )39 =============================================================

40 BULK INSERT41 [ database_name . [ schema_name ] . | schema_name . ] [ table_name |view_name ]42 FROM 'data_file'

43 [ WITH44 (45 [ [ , ] BATCHSIZE = batch_size ] --BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量46 [ [ , ] CHECK_CONSTRAINTS ] --指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。47 [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] --指定该数据文件中数据的代码页48 [ [ , ] DATAFILETYPE =

49 { 'char' | 'native'| 'widechar' | 'widenative' } ] --指定 BULK INSERT 使用指定的数据文件类型值执行导入操作。50 [ [ , ] FIELDTERMINATOR = 'field_terminator' ] --标识分隔内容的符号51 [ [ , ] FIRSTROW = first_row ] --指定要加载的第一行的行号。默认值是指定数据文件中的第一行52 [ [ , ] FIRE_TRIGGERS ] --是否启动触发器53 [ [ , ] FORMATFILE = 'format_file_path']54 [ [ , ] KEEPIDENTITY ] --指定导入数据文件中的标识值用于标识列55 [ [ , ] KEEPNULLS ] --指定在大容量导入操作期间空列应保留一个空值,而不插入用于列的任何默认值56 [ [ , ] KILOBYTES_PER_BATCH =kilobytes_per_batch ]57 [ [ , ] LASTROW = last_row ] --指定要加载的最后一行的行号58 [ [ , ] MAXERRORS = max_errors ] --指定允许在数据中出现的最多语法错误数,超过该数量后将取消大容量导入操作。59 [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] --指定数据文件中的数据如何排序60 [ [ , ] ROWS_PER_BATCH =rows_per_batch ]61 [ [ , ] ROWTERMINATOR = 'row_terminator' ] --标识分隔行的符号62 [ [ , ] TABLOCK ] --指定为大容量导入操作持续时间获取一个表级锁63 [ [ , ] ERRORFILE = 'file_name' ] --指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。64 )]

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

Sql代码

1 bulk insert xsxt.dbo.tabletest from 'c:/data.txt'

2 with(3 FIELDTERMINATOR=',',4 ROWTERMINATOR='/n'

5 )

mysql5.7 bulk insert_Bulk Insert 高效快速插入数据相关推荐

  1. mysql如何高效批量插入数据

    mysql如何高效批量插入数据 1.一种可以再代码中循环着执行单条插入数据的语句,这种效率太差. insert into table ([列名],[列名]) values ([列值],[列值])); ...

  2. MySQL如何快速插入数据

    前言: 日常学习和工作中,经常会遇到导数据的需求.比如数据迁移.数据恢复.新建从库等,这些操作可能都会涉及大量数据的导入 有时候导入进度慢,电脑风扇狂转真的很让人崩溃,其实有些小技巧是可以让导入更快速 ...

  3. 大批量快速插入数据方法

    本方法针对的是sqlserver2008,其他的没试过不能确定是否适用. 有时我们可能要往数据库插入大量数据,如果逐条插入的话会很慢,那有什么方法能 批量插入的吗,下面就说说我在工作中使用的一些方法吧 ...

  4. sqlserver 批量快速插入数据

    先转换成DataTable 然后插入数据 1.使用最后再看看使用表值参数的效率 效率最高. 首先先创建 表值特性类型的表(此表应该与转换后的datatable的列相同不然会出错) 查看地方在:当前数据 ...

  5. mysql批量insert into_mysql批量插入数据

    review代码发现,同事mysql批量插入数据的实现方法是,用for循环遍历,将列表每个数据单次插入.相当于批量插入N条数据,进行了n次的数据库连接和插入操作. 底层有批量插入的方法,但是会有问题, ...

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

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

  7. 快速插入数据mysql数据库

    #coding:utf-8 import random import pymysql# 导入偏函数模块 from functools import partialdef exect(cursor,sq ...

  8. mysql如何快速插入数据_如何快速向Mysql插入大量数据?

    本文摘要 本文演示了3分钟如何向MySQL数据库中插入100万条数据的实例. 一.编写测试案例向MySQL数据库中插入百万条数据.测试数据表建表脚本如下:use db_xk; drop table i ...

  9. MySQL:插入数据insert ignore,重复数据自动忽略

    MySQL中插入数据,如果插入的数据在表中已经存在(主键或者唯一键已存在),使用insert ignore 语法可以忽略插入重复的数据. 1.insert ignore 语法 insert ignor ...

  10. C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据

    C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...

最新文章

  1. 英伟达PyTorch优化神器TensorRT重磅更新!10亿参数大模型实时运行,GPT推理加速21倍...
  2. java普通项目打包成exe可执行文件
  3. 数据库设计和管理规范
  4. web实践 例会12月27日
  5. speaking class onOct 13
  6. 世界排名前20的大学毕业生去做银行柜员,柜员工资是不是很高?
  7. ansys变形太夸张_航母上的一颗铆钉能换一辆奥迪?太奢侈了
  8. java 逆矩阵,java – 如何创建逆变换矩阵
  9. 清浮动,防止上下margin重叠(浏览器顶部空白崩溃)
  10. 6410 spi 设备驱动
  11. 接口测试——Jmeter直连数据库无法获取查找到的数据个数
  12. usbcan、can分析仪的产品特点和功能特点
  13. 关于百度地图海量打点的问题
  14. Arcgis计算矢量数据的面积
  15. Dialog System, QA问答系统
  16. w7计算机超级管理员权限,win7系统取得管理员最高权限的操作方法
  17. EOJ 2706 Fenwick Tree 树状数组找规律
  18. 二维码防伪系统开发-实现了产品信息防伪的高效性
  19. 操作系统安全防护技术
  20. vscode上利用screen命令跑代码

热门文章

  1. jQuery 1.3 API 参考文档中文版
  2. sql替换字符串中的部分字符
  3. python解压bz2文件命令_解压缩bz2文件
  4. layui文档,最新文档地址,官网已经下线
  5. 优化算法进阶;word2vec;词嵌入进阶
  6. 安卓天气查询预报APP软件的制作
  7. html调用eps,eps输出没有属性
  8. NLP ---文本情感分析
  9. Java常见算法(一)
  10. php sjis,【通译】PHP中文字编码变换时使用SJIS-win而非SJIS,使用eucJP-win而非EUC-JP...