`
onlyor
  • 浏览: 370750 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

参数 
'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   子句将被忽略。给出的列名必须是目的表中有效的列。默认情况下,大容量插入操作假设数据文件未排序。 



是表示可以指定多列的占位符。 

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

本例指定   FIRE_TRIGGERS   参数。 

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

分享到:
评论

相关推荐

    sql server Bulk Insert命令详细

    BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中。 语法: BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' } WITH ( [ BATCHSIZE [ = batch_size ] ], [ ...

    常用sql整理

    4、BULK INSERT.txt 5、双色球.txt 6、删除完全重复数据.txt 7、快速备份.txt 8、计算table的空间使用量.txt 9、分割sql.txt 10、导出Html.txt 11、top m n.txt 12、sql替代游标.txt 13、sql查看数据库表行数.txt 14...

    MYSQL之插入极限分析

    1、如果同时从同一个客户端...参见13.2.4 节,“INSERT语法”。 3、用MyISAM,如果在表中没有删除的行,能在SELECT语句正在运行的同时插入行。 4、当从一个文本文件装载一个表时,使用LOAD DATA INFILE。这通常比使用很

    迷你SQL2000

    BULK INSERT xxxTable FROM 'c:\xxx.csv' WITH (FORMATFILE = 'fieldMap.fmt', BATCHSIZE=10000) 1.2.7 +配置中添加Debug条件项,其值非0,则在启动时不会锁定面板,便于程序员使用; +计划任务中备份部分增加对...

    db:与数据库交互的辅助工具

    批量插入器该类利用了MySQL,PostgreSQL和SQLite中可用的扩展插入/多行语法。 它基本上取代了发送一批查询的需要: INSERT INTO user (id, name, age) VALUES ( 1 , ' Bob ' , 20 );INSERT INTO user (id, name, age...

    SQL Server 2008高级程序设计 5/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    SQL Server 2008高级程序设计 4/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    SQL Server 2008高级程序设计 6/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    SQL Server 2008高级程序设计 1/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    SQL Server 2008高级程序设计 2/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    SQL Server 2008高级程序设计 3/6

     15.3 BULK INSERT  15.4 OPENROWSET(BULK)  15.5 小结 第16章 开始集成  16.1 理解问题  16.2 包的综述  16.3 创建简单的包  16.4 执行包  16.5 小结 第17章 复制  17.1 复制的基础知识  17.2...

    演示如何使用 SqlBulkCopy 类加载数据

    如果源表和目标表都在同一个 SQL Server 实例中,则使用 Transact-SQL INSERT … SELECT 语句复制数据会更方便快捷。 using System.Data.SqlClient; class Program { static void Main() { string ...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    7.1.1 旧语法和新语法 7.1.2 基本联接类型 7.1.3 其他的联接分类 7.1.4 上一年度的滑动合计 7.1.5 联接算法 7.1.6 拆分元素 7.2 集合运算 7.2.1 UNION 7.2.2 EXCEPT  7.2.3 INTERSECT 7.2.4 集合运算的...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    7.1.1 旧语法和新语法297 7.1.2 基本联接类型298 7.1.3 其他的联接分类306 7.1.4 上一年度的滑动合计317 7.1.5 联接算法320 7.1.6 拆分元素326 7.2 集合运算332 7.2.1 UNION332 7.2.2 EXCEPT333 7.2.3 INTERSECT334 ...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    7.1.1 旧语法和新语法297 7.1.2 基本联接类型298 7.1.3 其他的联接分类306 7.1.4 上一年度的滑动合计317 7.1.5 联接算法320 7.1.6 拆分元素326 7.2 集合运算332 7.2.1 UNION332 7.2.2 EXCEPT333 7.2.3 ...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    11.5 使用BULK INSERT 命令 第12章 链接服务器与分布式事务 12.1 使用链接服务器和分布式数据 12.1.1 使用分布式查询 12.1.2 使用分布式事务 12.1.3 运行分布式事务处理协调器服务 12.2 管理链接服务器 12.2.1 添加...

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    11.5 使用BULK INSERT 命令 第12章 链接服务器与分布式事务 12.1 使用链接服务器和分布式数据 12.1.1 使用分布式查询 12.1.2 使用分布式事务 12.1.3 运行分布式事务处理协调器服务 12.2 管理链接服务器 12.2.1 添加...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    11.5 使用BULK INSERT 命令 第12章 链接服务器与分布式事务 12.1 使用链接服务器和分布式数据 12.1.1 使用分布式查询 12.1.2 使用分布式事务 12.1.3 运行分布式事务处理协调器服务 12.2 管理链接服务器 12.2.1 添加...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

    (本书由4部分组成,需下载完4个文件之后,放在同一文件目录下才能正常解压) 基本信息  作者:(美国)(William R.Stanek)斯坦里克 译者:贾洪峰  出版社:清华大学出版社  页码:583 页  出版日期:2009年 ...

Global site tag (gtag.js) - Google Analytics