431.chapter10. working with flat files

本文详细介绍了使用BulkCopyProgram(BCP)和BULK INSERT两种方法在SQL Server中进行数据的大批量导入和导出操作。BCP作为命令行工具,能够高效地将数据在SQL Server和文件间迁移,但不适用于复杂的数据转换和验证。BULK INSERT则更适合仅导入数据的场景,且在SQL Server内部执行,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

二、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/archive/2009/02/26/1398885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值