[轉]使用BCP導出導入數據


本文轉自:http://www.cnblogs.com/zerocc/p/3225723.html

bcp 實用工具可以在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量復制數據。  使用 bcp 實用工具可以將大量新行導入 SQL Server 表,或將表數據導出到數據文件。 除非與 queryout 選項一起使用,否則使用該實用工具不需要了解 Transact-SQL 知識。 若要將數據導入表中,必須使用為該表創建的格式文件,或者必須了解表的結構以及對於該表中的列有效的數據類型。

BCP的所有參數:

 

BCP可以執行的4種操作

(1) 導入 這個動作使用in命令完成,后面跟需要導入的文件名。 (2) 導出 這個動作使用out命令完成,后面跟需要導出的文件名。 (3) 使用SQL語句導出 這個動作使用queryout命令完成,它跟out類似,只是數據源不是表或視圖名,而是SQL語句。 (4) 導出格式文件 這個動作使用format命令完成,后而跟格式文件名。

常用操作:

1. BCP 可信任連接到本地表導出:

用windows認證登陸並把text.dbo.name的表導出到D盤的 t_001.txt

2. BCP 可信任連接到導出查詢

3. BCP 可信任連接連到遠程服務器導出查詢

也可以使用下面的T-SQL命令:

EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_002.txt -c -t -T' EXEC master..xp_cmdshell 'BCP "select name from test.dbo.name" queryout d:\t_004.txt -c -t -T' EXEC master..xp_cmdshell 'BCP tran_test.dbo.uptrans out d:\t_006.txt -c -t -S HOUYAJUN\JHIDCDBS005 -T'

在執行上述命令的時候可能會報錯 : 錯誤提示:消息 15281,級別 16,狀態 1,過程 xp_cmdshell,第 1 行

SQL Server 阻止了對組件 'xp_cmdshell' 的 過程 'sys.xp_cmdshell' 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'xp_cmdshell'。有關啟用 'xp_cmdshell' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。

這個時候需要我們來開啟 :

復制代碼
-- 允許配置高級選項 EXEC master.sys.sp_configure 'show advanced options', 1 -- 重新配置 RECONFIGURE -- 啟用xp_cmdshell EXEC master.sys.sp_configure 'xp_cmdshell', 1 --重新配置 RECONFIGURE 
復制代碼

用完之后再把其關閉,關閉只需要把 1 變為 0 即可。 上面的語句也可以通過輸入用戶名和密碼的形式出來,如下例句:

EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_008.txt -c -t -U"sa" -P"ssssaaaa"'

4. BCP的導入 只需要把上面的 OUT 變為 in 就可以了。

EXEC master..xp_cmdshell 'BCP test.dbo.name in d:\t_002.txt -c -t -U -T'

這個是對剛才導出的數據進行重新的導入,可以很明顯的看到表中的數據已經增加了。

 

常用參數:

-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值插入,而不是這列的默認值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM