Filed under 數據庫技術
Leave a comment
SQL Server命令行導數據兩種方式bcp和sqlcmd
先說一下bcp:
BCP是SQL Server中負責導入導出數據的一個命令行工具,它是基於DB-Library的,並且能以並行的方式高效地導入導出大批量的數據。
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
指定被導出表要導到哪一行結束,或從被導入文件SQL Server命令行導數據時,導到哪一行結束。
-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值插入,而不是這列的默認值。
exp:
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U”sa” -P”passWord” –使用密碼連接或BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T –使用信任連接
BCP不僅可以接受表名或視圖名做為參數,也可以接受SQL做為參數。通過SQL語句可以對要導出的表進行過濾,然後導出過濾後的記錄。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -c -U”sa” -P”passWord”‘
BCP還可以通過簡單地設置選項對導出的行進行限制。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -F 10 -L 13 -c -U”sa” -P”passWord”‘
接著說sqlcmd:啟動 sqlcmd 實用工具並連接到 SQL Server 的默認實例
A、在“開始”菜單上,單擊“運行”。在“打開”框中,鍵入 cmd,然後單擊“確定”打開命令提示符窗口。
B、在命令提示符處,鍵入 sqlcmd。
C、按 Enter 鍵。
現在,您已與計算機上運行的默認 SQL Server 實例建立了可信連接。是 sqlcmd 提示符,可以指定行號。每按一次 Enter,該數字就會加 1。
D、若要結束 sqlcmd 會話,請在 sqlcmd 提示符處鍵入 EXIT。
exp:sqlcmd -S localhost -d databasename -U sa -P 12345 -i d:\test.sql
以上的相關內容就是對SQL Server命令行導數據的介紹,望你能有所收獲。