431.chapter10. working with flat files

二、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=',')

原文地址:https://www.cnblogs.com/yang_sy/p/1398885.html