二、Bulk Copy Program:
1 定义:一个使用大容量复制程度API的命令行工具。它可以执行下列任务
(1) 将SQL Server中的数据大容量导出到数据文件中
(2) 从查询中大容量导出树据
(3) 将数据文件中的数据大容量导入到SQL Server中
(4) 生成格式化文件
2 缺点:
(1) 不适宜用户对数据进行复杂的转换和验证
(2)有限的错误处理能力
3 bcp使用示例
(1) Copy the SQL Server data to a file
C:\>bcp DB..Table out sample.txt -S server -T –c
Starting copy...
63 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 46 Average : (1369.57 rows per sec.)
(2) Copy the data from file to SQL Server
C:\>bcp DB..XmlTransfer in XT.txt -S server-T –c
Starting copy...
3 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 93 Average : (32.26 rows per sec.)
(3) Copy the SQL Server data to a file, specify the coloumns
C:\>bcp "select field from db..table" queryout sample.txt
-S server -T -c
Starting copy...
63 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 15 Average : (4200.00 rows per sec.)
(4) Create format xml file
C:\>bcp db..table format null -S server-T -c -x -f sample.xml
4. 几个常用参数: -t, -r, -f
5. 特别介绍-h参数
(1)使用的范围:当导入数据时候有效,可以提高性能减少日志记录
(2)TABLOCK: 使用table lock在导入数据的时候
(3)ORDER:说明源数据按照某个字段进行排序。如果这个字段时数据库中表的粗索引一致,将有助于在导入的过程中提高性能,否则此参数在执行过程中将被忽略
三、BULK INSERT
1 bcp vs bulk BULK INSERT
(1) BULK INSERT仅能用来导入数据, bcp可以导入导出
(2) BULK INSERT在SQL内部执行,bcp运行在SQL外部,通过ICP来和SQL Server通讯
(3) 对于bcp的操作建议同样适用于BULK INSERT
2 三个常用参数的比较
(1) -t, -r, -F
(2) FIELDTERMINATOR, ROWTERMINATOR, FIRSTROW
3 BULK INSERT权限
(1) 当使用windows验证模式时,通过验证windows账户是否具有对文件的操作权限来判定是否可以执行BULK INSERT
(2) 当使用mixed验证模式时,如果使用没有与windows账户相匹配的SQL账户,那么将验证SQL Service账户是否对文件的操作具有权限
4 practise
bulk insert XmlTransfer from 'C:\sample.txt' with (DataFileType='widechar', ROWTERMINATOR=',')