大量插入任務允許像BULK INSERT語句或者bcp.exe命令列工具一樣從txt檔案(也叫做一般檔案)中插入資料。這個task工具箱中的Control Flow Items中,它不會產生資料流。這種task的一個缺點是在插入的時候不允許任何形式的資料轉換。同時,它可以以最快的速度向SQL Server中寫入大量的資料,不論資料量是的是小。
建立一個大量插入任務,然後設定它的屬性,開啟編輯頁面(圖3-2)。像大多數task一樣編輯頁面可以命名,描述這個task。注意命名要說明這個task完成的任務就像“準備儲存” Prepare Staging,這將會協助在以後的部署和調試工作。
圖3-2
最重要的配置是串連Connection,在Connection編輯頁面中允許你設定資料的源和目的地。從下拉式清單裡面選擇資料的目的地,選擇一個資料表。當設定了串連之後,還需要在File下拉式清單中設定串連檔案的名字。源和目的串連都使用Connection Manager。如果還沒有簡曆這樣的共用串連,需要從下拉式清單中選擇<New Connection…>建立一個串連。
設定好串連之後,可以設定插入資料的檔案的類型和它的分割符號。選擇UseFile或者從Format下拉式清單方塊中選擇。如果你選擇User File,你將選擇一個大量插入檔案的格式,它告訴task檔案時如何組織的(文本的行間隔符)。通常選擇Format下拉式清單指定檔案的格式。選擇項中設定間隔符。大多數情況下,預設的間隔符用來指定檔案格式。行間隔符columndelimiter執行行之間的間隔符號預設情況下是定位字元分割,也有的是逗號分隔。
注意。格式檔案一定要在SQL Server上,保證選項生效。如果在本地SQL Server上沒有,也可以使用遠端訪問路徑(\\MachineName\ShareName\FileName.csv)
在Option標籤頁面中,可以設定幾個不為人知的選項。可以為源檔案設定內碼列表,預設選項是RAW。資料檔案類型選項可以指定源檔案的種類。選項值包含char, native, widechar, and widenative。大體上說是char類型,有時也會有文字文件類型。你將會看到使用命令列語句參數-n調用bcp.exe建立的檔案。
在Option標籤頁面中如果想只插入資料行忽略表頭也可以設定first row和last row。BatchSize選擇項顯示一次何以寫入多少資料。如果設定為0,是一次將全部記錄寫入。如果記錄多於100000,可以設定該值為50000.
在選項Option的下拉式清單方塊中包含了5個可選擇的值
· Check Constraints: 這個選項將在執行時檢查表和列中的約束,這個選項是唯一預設為true的選項。
· Keep Nulls: 這個選擇項將文本中所有的空白替換成NULL然後寫入SQL Server中
· Table Lock: 這個選擇項將確保在執行task的時候目標表不能被插入和更新,這個設定將加快bulk insert,但是會給其他的更新造成中斷。設定時保證bulk insert執行的時候沒有其他的task正在執行。
· Fire Triggers: 預設情況下,為保證執行速度bulk insert將忽略觸發器,設定此選擇項,task在執行bulk insert的時候不再忽略觸犯器。
在Options標籤選項中還有其他的選擇項,SortedData選項指定插入資料的時候指定按照一個行的排列循序插入。預設設定是nothing,如果願意, 可以選擇一個你需要的排序的列的列名。MaxErrors選擇項指定在task停止執行之前可以忍受的最大的錯誤個數。預設情況下,只要有一行沒有正常插入整個task將失敗。
注意:Bulk Insert 任務不會記錄出現錯誤的行,如果想把這種異常的行記錄到一個檔案或表中,可以選擇Data Flow任務。