通過BCP工具可以將資料庫中對象匯出為資料檔案,具體操作如下:
1.包含查詢語句
exec master..xp_cmdshell 'bcp "select * from database.dbo.tableName" queryout "C:\a.txt" -S "databaseServer" -c -T'
2.不含查詢語句
exec master..xp_cmdshell 'bcp "database.dbo.tableName" out "c:\a.txt" -S "databaseServer" -c -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值插入,而不是這列的預設值。
-q 如果系統提示SET QUTO_IDENTIFIER ON/OFF時,需添加此參數
許可權:
bcp out 操作要求對源表有 SELECT 許可權。
bcp in 操作要求至少對目標表有 SELECT/INSERT 許可權。
當被匯入的表中存在CHECK約束和TRIGGER時,預設的行為為關閉,不要指定-h 選項和 CHECK_CONSTRAINTS 以及FIRE_TRIGGERS 提示。故需要對錶有Alter table 許可權。
註:凡參數須加"" 需注意大小寫