SSIS常用的包—大量插入任务(Bulk Insert task)
大量插入任務(wù)允許像BULK INSERT語(yǔ)句或者bcp.exe命令行工具一樣從txt文件(也叫做平面文件)中插入數(shù)據(jù)。這個(gè)task工具箱中的Control Flow Items中,它不會(huì)產(chǎn)生數(shù)據(jù)流。這種task的一個(gè)缺點(diǎn)是在插入的時(shí)候不允許任何形式的數(shù)據(jù)轉(zhuǎn)換。同時(shí),它可以以最快的速度向SQL Server中寫(xiě)入大量的數(shù)據(jù),不論數(shù)據(jù)量是的是小。
?
創(chuàng)建一個(gè)大量插入任務(wù),然后設(shè)置它的屬性,打開(kāi)編輯頁(yè)面(圖3-2)。像大多數(shù)task一樣編輯頁(yè)面可以命名,描述這個(gè)task。注意命名要說(shuō)明這個(gè)task完成的任務(wù)就像“準(zhǔn)備存儲(chǔ)” Prepare Staging,這將會(huì)幫助在以后的部署和調(diào)試工作。
?
圖3-2
最重要的配置是連接Connection,在Connection編輯頁(yè)面中允許你設(shè)置數(shù)據(jù)的源和目的地。從下拉列表里面選擇數(shù)據(jù)的目的地,選擇一個(gè)數(shù)據(jù)表。當(dāng)設(shè)置了連接之后,還需要在File下拉列表中設(shè)置連接文件的名字。源和目的連接都使用Connection Manager。如果還沒(méi)有簡(jiǎn)歷這樣的共享連接,需要從下拉列表中選擇<New Connection…>新建一個(gè)連接。
設(shè)置好連接之后,可以設(shè)置插入數(shù)據(jù)的文件的類(lèi)型和它的分割符號(hào)。選擇UseFile或者從Format下拉列表框中選擇。如果你選擇User File,你將選擇一個(gè)大量插入文件的格式,它告訴task文件時(shí)如何組織的(文本的行間隔符)。通常選擇Format下拉列表指定文件的格式。選擇項(xiàng)中設(shè)置間隔符。大多數(shù)情況下,默認(rèn)的間隔符用來(lái)指定文件格式。行間隔符columndelimiter執(zhí)行行之間的間隔符號(hào)默認(rèn)情況下是制表符分割,也有的是逗號(hào)分隔。
注意。格式文件一定要在SQL Server上,保證選項(xiàng)生效。如果在本地SQL Server上沒(méi)有,也可以使用遠(yuǎn)端訪問(wèn)路徑(\\MachineName\ShareName\FileName.csv)
?在Option標(biāo)簽頁(yè)面中,可以設(shè)置幾個(gè)不為人知的選項(xiàng)。可以為源文件設(shè)置內(nèi)碼列表,默認(rèn)選項(xiàng)是RAW。數(shù)據(jù)文件類(lèi)型選項(xiàng)可以指定源文件的種類(lèi)。選項(xiàng)值包含char, native, widechar, and widenative。大體上說(shuō)是char類(lèi)型,有時(shí)也會(huì)有文本文檔類(lèi)型。你將會(huì)看到使用命令行語(yǔ)句參數(shù)-n調(diào)用bcp.exe創(chuàng)建的文件。
在Option標(biāo)簽頁(yè)面中如果想只插入數(shù)據(jù)行忽略表頭也可以設(shè)置first row和last row。BatchSize選擇項(xiàng)顯示一次何以寫(xiě)入多少數(shù)據(jù)。如果設(shè)置為0,是一次將全部記錄寫(xiě)入。如果記錄多于100000,可以設(shè)置該值為50000.
在選項(xiàng)Option的下拉列表框中包含了5個(gè)可選擇的值
· Check Constraints: 這個(gè)選項(xiàng)將在執(zhí)行時(shí)檢查表和列中的約束,這個(gè)選項(xiàng)是唯一默認(rèn)為true的選項(xiàng)。
· Keep Nulls: 這個(gè)選擇項(xiàng)將文本中所有的空白替換成NULL然后寫(xiě)入SQL Server中
· Table Lock: 這個(gè)選擇項(xiàng)將確保在執(zhí)行task的時(shí)候目標(biāo)表不能被插入和更新,這個(gè)設(shè)置將加快bulk insert,但是會(huì)給其他的更新造成中斷。設(shè)置時(shí)保證bulk?insert執(zhí)行的時(shí)候沒(méi)有其他的task正在執(zhí)行。
· Fire Triggers: 默認(rèn)情況下,為保證執(zhí)行速度bulk insert將忽略觸發(fā)器,設(shè)置此選擇項(xiàng),task在執(zhí)行bulk insert的時(shí)候不再忽略觸犯器。
在Options標(biāo)簽選項(xiàng)中還有其他的選擇項(xiàng),SortedData選項(xiàng)指定插入數(shù)據(jù)的時(shí)候指定按照一個(gè)行的排列循序插入。默認(rèn)設(shè)置是nothing,如果愿意, 可以選擇一個(gè)你需要的排序的列的列名。MaxErrors選擇項(xiàng)指定在task停止執(zhí)行之前可以忍受的最大的錯(cuò)誤個(gè)數(shù)。默認(rèn)情況下,只要有一行沒(méi)有正常插入整個(gè)task將失敗。
注意:Bulk Insert 任務(wù)不會(huì)記錄出現(xiàn)錯(cuò)誤的行,如果想把這種異常的行記錄到一個(gè)文件或表中,可以選擇Data Flow任務(wù)。
??
總結(jié)
以上是生活随笔為你收集整理的SSIS常用的包—大量插入任务(Bulk Insert task)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拼多多app怎么退出登录
- 下一篇: iOS 13.3正式版什么时候会来