二、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 fileC:\>bcp DB..Table out sample.txt -S server -T –cStarting copy...63 rows copied.Network packet size (bytes): 4096Clock Time (ms.) Total : 46 Average : (1369.57 rows per sec.)(2) Copy the data from file to SQL ServerC:\>bcp DB..XmlTransfer in XT.txt -S server-T –cStarting copy...3 rows copied.Network packet size (bytes): 4096Clock Time (ms.) Total : 93 Average : (32.26 rows per sec.) (3) Copy the SQL Server data to a file, specify the coloumnsC:\>bcp "select field from db..table" queryout sample.txt -S server -T -cStarting copy...63 rows copied.Network packet size (bytes): 4096Clock Time (ms.) Total : 15 Average : (4200.00 rows per sec.) (4) Create format xml fileC:\>bcp db..table format null -S server-T -c -x -f sample.xml4. 几个常用参数: -t, -r, -f
5. 特别介绍-h参数
(1)使用的范围:当导入数据时候有效,可以提高性能减少日志记录(2)TABLOCK: 使用table lock在导入数据的时候(3)ORDER:说明源数据按照某个字段进行排序。如果这个字段时数据库中表的粗索引一致,将有助于在导入的过程中提高性能,否则此参数在执行过程中将被忽略 三、BULK INSERT1 bcp vs bulk BULK INSERT(1) BULK INSERT仅能用来导入数据, bcp可以导入导出(2) BULK INSERT在SQL内部执行,bcp运行在SQL外部,通过ICP来和SQL Server通讯(3) 对于bcp的操作建议同样适用于BULK INSERT2 三个常用参数的比较
(1) -t, -r, -F(2) FIELDTERMINATOR, ROWTERMINATOR, FIRSTROW3 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=',')