SSIS常用的包—大量插入任務(Bulk Insert task)
大量插入任務允許像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任務。
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯系冬天里的一把火
浙公網安備 33010602011771號