使用資料檔案與格式檔案
最簡單的大量複製程式會執行下列動作:
資料檔案是在原生模式下建立的,因此,來自資料表或檢視之所有資料行的資料會以與資料庫相同的格式,儲存在資料檔案中。 接著,可以使用這些相同的步驟,並設定 DB_IN (而非 DB_OUT),將檔案大量複製到伺服器中。 只有當來源資料表和目標資料表兩者都具有相同的結構時,才適用這種方法。 產生的資料檔案也可以使用/n (原生模式) 參數,來輸入bcp公用程式。
若要大量複製 Transact-SQL 語句的結果集,而不是直接從資料表或檢視表複製:
呼叫 bcp_init 以指定大量複製,但針對資料表名稱指定 Null。
呼叫eOption設為 BCPHINTS 且iValue設定為包含 Transact-SQL 語句之 SQLTCHAR 字串指標的bcp_control。
呼叫 bcp_exec 來執行大量複製作業。
Transact-SQL 語句可以是產生結果集的任何語句。 系統會建立資料檔案,其中包含 Transact-SQL 語句的第一個結果集。 如果 Transact-SQL 語句產生多個結果集,大量複製會忽略第一個結果集之後的任何結果集。
若要建立資料檔,其中資料行資料儲存的格式與資料表不同,請呼叫 bcp_columns 以指定要變更的資料行數目,然後針對您要變更其格式的每個資料行呼叫 bcp_colfmt 。 呼叫 bcp_init 之後,但在呼叫 bcp_exec之前,即可完成此作業。 bcp_colfmt 指定資料行資料儲存在資料檔案中的格式。 當大量複製或移出時,可以使用它。您也可以使用 bcp_colfmt 來設定資料列和資料行結束字元。 例如,如果您的資料不包含定位字元,您可以使用 bcp_colfmt 來建立定位字元分隔的檔案,將索引標籤字元設定為每個資料行的結束字元。
大量複製和使用bcp_colfmt時,您可以輕鬆地建立格式檔案,描述您在上一次呼叫bcp_colfmt之後呼叫bcp_writefmt所建立的資料檔案。
從格式檔案所述的資料檔案大量複製時,請在bcp_init之後呼叫bcp_readfmt,但在bcp_exec之前呼叫 bcp_readfmt 來讀取格式檔案。
當從資料檔案大量複製到SQL Server時,bcp_control函式會控制數個選項。 bcp_control 設定選項,例如終止前的錯誤數目上限、要啟動大量複製的檔案中的資料列、要停止的資料列,以及批次大小。