天天看點

使用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 記

繼續閱讀