天天看点

使用BCP命令将SqlServer2008的数据输出到文本

因为项目需要使用BCP来将SqlServer2008中的数据导出到txt文档中,所以就在本地部署了一份,要做测试用,所以简单的来了解一下:

BCP是SQL Server中负责导入导出数据的一个命令行工具,基于DB-Library的,可以以并行的方式高效的导入导出大批量的数据。

BCP命令的语法如下:

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
      {in | out | queryout | format} data_file
      [-m max_errors] [-f format_file] [-e err_file]
      [-F first_row] [-L last_row] [-b batch_size]
      [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
      [-q] [-C code_page] [-t field_term] [-r row_term]
      [-i input_file] [-o output_file] [-a packet_size]
      [-S server_name[\instance_name]] [-U login_id] [-P password]
      [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
           

具体用法请参考MSDN上的文档: BCP实用工具 

那么在我们使用BCP命令之前,我们首先要在Sql Server数据库中执行下列语句,以修改Sql Server的配置,启用对BCP命令的支持。

--允许配置高级选项
exec sp_configure 'show advanced options',1
go

--重新配置
reconfigure
go

--启用xp_cmdshell
exec sp_configure 'xp_cmdshell',1
go
           

那么需要知道的是,BCP命令是不能直接在Sql Server的窗口中执行的,所以我们可以在cmd窗口中测试下我们的命令语句,像我的就是如下所示:

bcp "select * from TestDB..record" queryout F:\bcpFile.txt -c -T
           

数据是我自己生成的测试数据,总共60004行,record表共有三列,分别是recordId、recordName和recordFlag,耗时499毫秒,具体可以看下图片,对于BCP的内部原理不是很清楚,但是可以看得出来这是一个比较高效的命令行工具。

使用BCP命令将SqlServer2008的数据输出到文本

OK,因为最近都一直在忙着优化的工作,所以可能耽误了一些学习的宝贵时间,我希望可以尽快做好这个工作,同时也把自己感兴趣的技术学好。

2013年04月26日,Eric.Tang 记

继续阅读