SQL Server bcp 工具 + 生產力
來源:互聯網
上載者:User
server
bcp 工具 + 生產力
bcp 工具 + 生產力在 Microsoft® SQL Server™ 2000 執行個體和資料檔案之間以使用者指定的格式複製資料。
文法
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} 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 才有用。
字碼頁值描述ACPANSI/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
指定在大量複製操作中空列應保留一個空值,而不是對插入的列賦予預設值。
-E
指定識別欄位的值出現在要匯入的檔案中。如果沒有給出 -E,則正匯入的資料檔案中此列的標識值將被忽略,而且 SQL Server 2000 會根據建立表期間指定的種子值和增量值自動指派唯一的值。如果資料檔案的表或視圖中不包含識別欄位的值,則使用格式檔案指定匯入資料時應跳過表或視圖中的識別欄位;SQL Server 2000 將自動為該列指派唯一值。有關詳細資料,請參見 DBCC CHECKIDENT。
-h "hint [,...n]"
指定在大量複製資料到表或視圖時所使用的提示。在大量複製資料到 SQL Server 6.x 或更早版本時,不能使用此選項。
提示描述ORDER (column [ASC | DESC] [,...n])資料檔案中資料的排序次序。如果要裝載的資料已根據表中的叢集索引排序,則會提高大量複製的效能。如果資料檔案按不同次序排序,或者該表沒有叢集索引,則將忽略 ORDER 提示。所提供的列名必須是目的表中的有效列。預設情況下,bcp 假設資料檔案沒有排序。ROWS_PER_BATCH = bb每批中資料的行數(即 bb)。在未指定 -b 時使用,這將使整個資料檔案作為單個事務發送到伺服器。伺服器根據值 bb 最佳化大容量裝載。預設情況下,ROWS_PER_BATCH 未知。KILOBYTES_PER_BATCH = cc每批中資料的KB (KB) 近似數量(即 cc)。預設情況下,KILOBYTES_PER_BATCH 未知。TABLOCK大量複製操作期間將擷取表級鎖。由於只在大量複製操作期間才控制鎖減少了表中鎖的爭奪,因此此提示可以顯著提高效能。如果表沒有索引並且指定了 TABLOCK,則該表可以同時由多個用戶端裝載。預設情況下,鎖定行為是由表選項 table lock on bulk load 決定的。CHECK_CONSTRAINTS大量複製操作期間,將檢查目的表上的所有約束。預設情況下,將會忽略約束。FIRE_TRIGGERS與 in 參數一起指定,在目的表上定義的任何插入觸發器將在大量複製操作期間執行。如果沒有指定 FIRE_TRIGGERS,則不執行插入觸發器。對於 out、queryout 和 format 參數,將忽略 FIRE_TRIGGERS。
注釋
將忽略要匯入的資料檔案中計算資料行或 timestamp 列的值,SQL Server 2000 自動賦值。如果資料檔案不包含表中的計算資料行或 timestamp 列的值,可用格式檔案指定應在匯入資料時跳過表中的計算資料行和 timestamp 列;SQL Server 將自動為該列賦值。
計算資料行和 timestamp 列照常會從 SQL Server 大量複製到一個資料檔案。
SQL Server 標識符(包括資料庫名稱、表名或視圖名、登入和密碼)可以包含諸如嵌入空格和引號等字元。當在命令提示字元處指定包含空格或引號的標識符或檔案名稱時,需要將該標識符引在雙引號 (" ") 內。另外,對於包含嵌入空格或引號的所有者、表或視圖的名稱,可以指定 -q 選項,或者將所有者、表或視圖的名稱在雙引號內用方括弧 ([ ]) 括起來。
例如,Northwind 資料庫內有表 Jane's Orders,該表由使用者 Jane Doe 所擁有。若要使用登入 Jane Doe 和密碼 go dba 將該表從 Northwind 資料庫大量複製到 Orders.txt 檔案,請執行下列命令之一:
bcp "Northwind.Jane Doe.Jane's Orders" out "Jane's Orders.txt" -c -q -U"Jane Doe" -P"go dba"bcp "Northwind.[Jane Doe].[Jane's Orders]" out "Jane's Orders.txt" -c -U"Jane Doe" -P"go dba"
若要指定包含空格或引號的資料庫名稱,必須使用 -q 選項。