使用BCP匯出匯入資料

2021-07-12 03:01:38 字數 3156 閱讀 2923

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

'

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

有兩種辦法可以刪除表中的所有資料:

1、truncate table 刪除表中的所有行,而不記錄單個行刪除操作。 

語法 truncate table name

引數 name 是要截斷的表的名稱或要刪除其全部行的表的名稱。

2、delete from tablename where 1=1

使用BCP匯出匯入資料

bcp實用工具可以在 microsoft sql server 例項和使用者指定格式的資料檔案間大容量複製資料。使用bcp實用工具可以將大量新行匯入 sql server 表,或將表資料匯出到資料檔案。除非與queryout選項一起使用,否則使用該實用工具不需要了解 transact sql 知識。...

bcp匯入匯出

匯出 set cmd n bcp select from 庫.dbo.test1 n queryout d voc txt c u liyuepeng p liyuepeng exec master.xp cmdshell cmd set cmd n bcp 庫.dbo.test2 n in d v...

BCP大資料匯入匯出

bcp命令列匯出匯入大資料 首先看匯出 要點 確保你安裝了microsoft command line utilities 15 for sql server x64 msi這個包 進入command視窗,這個不用說了吧,都會的win r,cmd 下面 為匯出資料,我的機器大概每秒10000多行,相...