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