BCP 命令詳解

2021-08-22 20:13:37 字數 4981 閱讀 7432

bcp 實用工具在 microsoft? sql server? 2000 例項和資料檔案之間以使用者指定的格式複製資料。

語法bcp | "query"}

data_file

[-m max_errors] [-f format_file] [-e err_file]

[-f first_row] [-l last_row] [-b batch_size]

[-n] [-c] [-w] [-n] [-v (60 | 65 | 70)] [-6]

[-q] [-c code_page] [-t field_term] [-r row_term]

[-i input_file] [-o output_file] [-a packet_size]

[-s server_name[/instance_name]] [-u login_id] [-p password]

[-t] [-v] [-r] [-k] [-e] [-h "hint [,...n]"]

引數 database_name

指定的表或檢視所在資料庫的名稱。如果未指定,則為使用者預設資料庫。

owner

表或檢視所有者的名稱。如果執行大容量複製操作的使用者擁有指定的表或檢視,則 owner 是可選的。如果沒有指定 owner 並且執行大容量複製操作的使用者不擁有指定的表或檢視,則 microsoft? sql server? 2000 將返回錯誤資訊並取消大容量複製操作。

table_name

是將資料複製到 sql server 時 (in) 的目的表名,以及從 sql server 複製資料時 (out) 的源表名。

view_name

是將資料複製到 sql server 時 (in) 的目的檢視名,以及從 sql server 複製資料時 (out) 的源檢視名。只有其中所有列都引用同乙個表的檢視才能用作目的檢視。有關將資料複製到檢視的限制的更多資訊,請參見 insert。

query

是返回乙個結果集的 transact-sql 查詢。如果查詢返回多個結果集,例如指定 compute 子句的 select 語句,只有第乙個結果集將複製到資料檔案,隨後的結果集被忽略。使用雙引號引起查詢語句,使用單引號引起查詢語句中嵌入的任何內容。在從查詢中大容量複製資料時,還必須指定 queryout。

in | out | queryout | format

指定大容量複製的方向。in 是從檔案複製到資料庫表或檢視,out 是指從資料庫表或檢視複製到檔案。只有從查詢中大容量複製資料時,才必須指定 queryout。根據指定的選項(-n、-c、-w、-6 或 -n)以及表或檢視分隔符,format 將建立乙個格式檔案。如果使用 format,則還必須指定 -f 選項。

說明microsoft sql server 6.5 中的 bcp 實用工具不支援大容量複製到包含 sql_variant 或 bigint 資料型別的表。

data_file

大容量複製表或檢視到磁碟(或者從磁碟複製)時所用資料檔案的完整路徑。當將資料大容量複製到 sql server 時,此資料檔案包含將複製到指定表或檢視的資料。當從 sql server 大容量複製資料時,該資料檔案包含從表或檢視複製的資料。路徑可以有 1 到 255 個字元。

-m max_errors

指定在大容量複製操作取消之前可能產生的錯誤的最大數目。bcp 無法複製的每一行都將被忽略並計為乙個錯誤。如果沒有包括該選項,則預設為 10。

-f format_file

指定格式檔案的完整路徑,該格式檔案包含以前在同乙個表或檢視上使用 bcp 時的儲存響應。當使用由 format 選項所建立的格式檔案大容量複製入或複製出資料時,使用此選項。格式檔案的建立是可選的。在提示幾個格式問題之後,bcp 將提示是否在格式檔案中儲存回答。預設檔名為 bcp.fmt。大容量複製資料時,bcp 可引用乙個格式檔案,因此不必重新互動輸入以前的回答。如果未使用此選項,也沒有指定 –n、-c、-w、-6 或 -n,則 bcp 將提示輸入格式資訊。

-e err_file

指定錯誤檔案的完整路徑,此錯誤檔案用於儲存 bcp 無法從檔案傳輸到資料庫的所有行。來自 bcp 的錯誤資訊將傳送到使用者工作站。如果未使用此選項,則不建立錯誤檔案。

-f first_row

指定要大容量複製的第一行的序數。預設值是 1,表示在指定資料檔案的第一行。

-l last_row

指定要大容量複製的最後一行的序數。預設值是 0,表示指定資料檔案中的最後一行。

-b batch_size

指定所複製的每批資料中的行數。每個批處理作為乙個事務複製至伺服器。sql server 提交或回滾(在失敗時)每個批處理的事務。預設情況下,指定的資料檔案中的所有資料都作為一批覆制。請不要與 -h "rows_per_batch = bb" 選項一起使用。

-n使用資料的本機(資料庫)資料型別執行大容量複製操作。此選項不提示輸入每一字段,它將使用本機值。

-c使用字元資料型別執行大容量複製操作。此選項不提示輸入每一字段;它使用 char 作為儲存型別,不帶字首,/t(製表符)作為字段分隔符,/n(換行符)作為行終止符。

-w使用 unicode 字元執行大容量複製操作。此選項不提示輸入每一字段;它使用 nchar 作為儲存型別,不帶字首,/t(製表符)作為字段分隔符,/n(換行符)作為行終止符。不能在 sql server 6.5 版或更早版本中使用。

-n對非字元資料使用資料的本機(資料庫)資料型別和對字元資料使用 unicode 字元型別執行大容量複製操作。這是可替代 -w 選項的效能更高的選項,其目的是使用資料檔案將資料從乙個 sql server 傳輸到另乙個 sql server 中。它不提示輸入每一字段。在需要傳輸包含 ansi 擴充套件字元的資料以及想利用本機模式的效能時,可以使用這一選項。不能在 sql server 6.5 版或更早版本中使用 -n 選項。

-v (60 | 65 | 70)

使用 sql server 早期版本中的資料型別執行大容量複製操作。此選項與字元 (-c) 或本機 (-n) 格式一起使用。此選項並不提示輸入每一字段,它使用預設值。例如,若要將 sql server 6.5 中的 bcp 實用工具所支援(但 odbc 不再支援)的日期格式大容量複製到 sql server 2000,可使用 -v 65 引數。

重要將資料從 sql server 大容量複製到資料檔案時,即使指定了 –v,bcp 實用工具也不會為任何 datetime 或 smalldatetime 資料生成 sql server 6.0 或 sql server 6.5 的日期格式。日期將始終以 odbc 格式寫入。另外,由於 sql server 6.5 版或更早版本不支援可為空的 bit 資料,因此 bit 列中的空值寫為值 0。

-6使用 sql server 6.0 或 sql server 6.5 資料型別執行大容量複製操作。僅為保持向後相容性。改為使用 –v 選項。

-q在 bcp 實用工具和 sql server 例項的連線中執行 set quoted_identifiers on 語句。使用該選項指定包含空格或引號的資料庫、所有者、表或檢視的名稱。將由三部分組成的整個表名或檢視名引在雙引號 (" ") 中。

-c code_page

僅為保持向後相容性。作為代替,請在格式檔案或互動式 bcp 中為每一列指定乙個排序規則名。

指定資料檔案中的資料**頁。只有當資料中包含字元值大於 127 或小於 32 的 char、varchar 或 text 列時,code_page 才有用。

**頁值 描述

acp ansi/microsoft windows? (iso 1252)。

oem 客戶程式使用的預設**頁。如果未指定 -c,則這是 bcp 使用的預設**頁。

raw 不發生從乙個**頁到另乙個**頁的轉換。因為不發生轉換,所以這是最快的選項。

《值》 特定的**頁號碼,例如 850。

-t field_term

指定字段終止符。預設的字段終止符是 /t(製表符)。使用此引數替代預設字段終止符。

-r row_term

指定行終止符。預設的行終止符是 /n(換行符)。使用此引數替代預設行終止符。

-i input_file

指定響應檔案的名稱,使用互動模式(未指定 –n、-c、-w、-6 或 -n)執行大容量複製時,響應檔案包含對每一欄位命令提示問題的響應。

-o output_file

指定接收 bcp 輸出(從命令提示重定向)的檔案的名稱。

-a packet_size

指定傳送到和傳送自伺服器的每個網路資料報的位元組數。可以使用 sql server 企業管理器(或 sp_configure 系統儲存過程)設定伺服器配置選項。但是,使用此選項可以單個地替代伺服器配置選項。packet_size 可以設定為 4096 到 65535 位元組,預設值為 4096。

資料報大小的增加能夠提高大容量複製操作的效能。如果要求乙個較大的資料報而得不到,則使用預設設定。bcp 生成的效能統計顯示出所使用資料報的大小。

-s server_name[/instance_name]

指定要連線到的 sql server 例項。指定 server_name 以連線該伺服器上的 sql server 預設例項。指定 server_name/instance_name 以連線到該伺服器上的 sql server 2000 命名例項。如果未指定伺服器,則 bcp 連線到本地計算機上的 sql server 預設例項。從網路上的遠端計算機執行 bcp 時,要求此選項。

-u login_id

指定用於連線到 sql server 的登入 id。

-p password

指定登入 id 的密碼。如果未使用此選項,則 bcp 將提示輸入密碼。如果不帶密碼將此選項用於命令提示行末尾,則 bcp 將使用預設密碼 (null)。

-t指定 bcp 使用網路使用者的安全憑據,通過信任連線連線到 sql server。不需要 login_id 和 password。

-v報告 bcp 實用工具的版本號和版權。

-r指定使用為客戶端計算機的區域設定定義的區域格式,將貨幣、日期和時間資料大容量複製到 sql server 中。預設情況下,將會忽略區域設定。

-k指定在大容量複製操作中空列應保留乙個空值,而不是對插入的列賦予預設值。[/

BCP 命令的應用

about bulk insert db,i use the bcp command to create the format file fmt as follow first,to create the format file 1.open cmd command window 2.input b...

bcp 基本命令

exec master.xp cmdshell bcp test.dbo.student in d a.txt c t in 匯入 exec master.xp cmdshell bcp test.dbo.student out d a.txt c t out 匯出 c 用字元資料型別執行該操作。此...

bcp命令匯入大量資料到sql server

公司進行年終總結,需要對300w客戶進行追蹤,但是這300w客戶的id匯入資料庫中讓我小小糾結了一下。因為需求部門提給我的是excel的資料格式,所以第一反應是用excel匯入,但是sql server2005只支援office 2003的格式,所以只能用xls匯入,但是xls一張表只能支援6553...