? ? ?BCP是SQL Server中負責導入導出數據的一個命令行工具,它是基于DB-Library的,并且能以并行的方式高效地導入導出大批量的數據。本文介紹如何利用BCP導入導出數據。
? ? ? ? BCP是SQL Server中負責導入導出數據的一個命令行工具,它是基于DB-Library的,并且能以并行的方式高效地導入導出大批量的數據。BCP可以將數據庫的表或視圖直接導出,也能通過SELECT FROM語句對表或視圖進行過濾后導出。在導入導出數據時,可以使用默認值或是使用一個格式文件將文件中的數據導入到數據庫或將數據庫中的數據導出到文件中。
下面將詳細討論如何利用BCP導入導出數據。
? 1. BCP的主要參數介紹
BCP共有四個動作可以選擇。
(1) 導入。
這個動作使用in命令完成,后面跟需要導入的文件名。
(2) 導出。
這個動作使用out命令完成,后面跟需要導出的文件名。
(3) 使用SQL語句導出。
這個動作使用queryout命令完成,它跟out類似,只是數據源不是表或視圖名,而是SQL語句。
(4) 導出格式文件。
這個動作使用format命令完成,后而跟格式文件名。
-f format_file
format_file表示格式文件名。這個選項依賴于上述的動作,如果使用的是in或out,format_file表示已經存在的格式文件,如果使用的是format則表示是要生成的格式文件。
-x?
這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row?
指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。
-L last_row?
指定被導出表要導到哪一行結束,或從被導入文件導數據時,導到哪一行結束。
-c?
使用char類型做為存儲類型,沒有前綴且以"\t"做為字段分割符,以"\n"做為行分割符。
-w
和-c類似,只是當使用Unicode字符集拷貝數據時使用,且以nchar做為存儲類型。
-t field_term?
指定字符分割符,默認是"\t"。
-r row_term?
指定行分割符,默認是"\n"。
-S server_name[ \instance_name]?
指定要連接的SQL Server服務器的實例,如果未指定此選項,BCP連接本機的SQL Server默認實例。如果要連接某臺機器上的默認實例,只需要指定機器名即可。
-U login_id?
指定連接SQL Sever的用戶名。
-P password?
指定連接SQL Server的用戶名密碼。
-T
指定BCP使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。
-k
指定空列使用null值插入,而不是這列的默認值。
-- 不利用格式化文件的導入導出(以下示例皆省略了-S參數,因為是在本機,又是默認實例)
-- 簡單導出表
exec ?master..xp_cmdshell? ' bcp?db_oa.dbo.T_User_list??out?c:\a.xls?-c?-T ' ???? -- "-T"信任連接
exec ?master..xp_cmdshell? ' bcp?db_oa.dbo.T_User_list??out?c:\a.txt?-c?-Usa?-Pxxxxx '
-- 過濾導出表
exec ?master..xp_cmdshell? ' bcp?"select?top?3?*?from?db_oa.dbo.t_user_list"??queryout?c:\a.txt?-c?-T '
-- 簡單導入表
exec ?master..xp_cmdshell? ' bcp?db_oa.dbo.T_User_list_2??in?c:\a.txt?-c?-T '
exec ?master..xp_cmdshell? ' bcp?db_oa.dbo.T_User_list_2??in?c:\a.txt?-c?-T?-E ' ???? -- 加上"-E"啟用identity_insert?on
?
2. 如何使用BCP導出數據
(1) 使用BCP導出整個表或視圖
EXEC ?master..xp_cmdshell? ' bcp?"SELECT??* from?bigfootmis.dbo.員工" ? ? ? ? ? ?queryout?d:\sqldata\abc.txt??-S.\sqlserver2005??-c?-T?-U?"sa"?-P?"yjsoft"? '
?
? 總結
BCP命令是SQL Server提供的一個快捷的數據導入導出工具。使用它不需要啟動任何圖形管理工具就能以高效的方式導入導出數據。當然,它也可以通過xp_cmdshell在SQL語句中執行,通過這種方式可以將其放到客戶端程序中(如delphi、c#等)運行,這也是使客戶端程序具有數據導入導出功能的方法之一。
?
?
?
?
?
?
??
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
