問題描述:當你把數據從其他數據庫,或者是文本文件之類的其他數據源導入到目的數據庫時,有時希望在導入的處理中,能夠實現"數據存在時更新,不存在時導入"在" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SSIS處理導入數據時, 存在的更新, 不存在的插入

系統 1680 0
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

問題描述 :

當你把數據從其他數據庫 , 或者是文本文件之類的其他數據源導入到目的數據庫時 , 有時希望在導入的處理中 , 能夠實現 " 數據存在時更新 , 不存在時導入 "

在之前 , 一般是通過導入臨時表 , 然后再判斷處理導入正式表的 , SQL Server 2005 , SSIS 可以在導入處理時直接完成這種處理 .

下面具體演示一下如何用 SSIS 完成這樣的處理 :

1. 準備測試環境

-- 1. 在數據庫中創建下面的對象

USE tempdb

GO

CREATE TABLE dbo.tb (

id int PRIMARY KEY ,

name nvarchar ( 128 ))

GO

-- 2. 準備兩個文本文件 , 放在 d:\test 目錄下 , 文件的內容如下

t1 . txt

id name

1 張三

2 李四

t2 . txt

id name

1 張三君

3 李林

4 阿聯酋

2. 創建新的 Integration Services 項目(創建 SSIS 包)

? 在“開始”菜單中,依次指向“所有程序”、“ Microsoft SQL Server <chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2005" unitname="”"><font face="Times New Roman">2005</font><span lang="EN-US" style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US">”</span></span></chmetcnv> ,再單擊 SQL Server Business Intelligence Development Studio

? 在“文件”菜單中,指向“新建”,再單擊“項目”,以創建一個新的 Integration Services 項目。

? 在“新建項目”對話框的“模板”窗格中,選擇“ Integration Services 項目”。

? 在“名稱”框中,將默認名稱更改為 SSIS Tutorial 。或者,清除“創建解決方案的目錄”復選框。

? 接受默認位置,或單擊“瀏覽”,以瀏覽并找到要使用的文件夾。

? 在“項目位置”對話框中,單擊文件夾,再單擊“打開”。

? 單擊“確定”。

? 默認情況下,將創建一個名為 新建包 .dtsx 的空包,并將該包添加到項目中。

? 在解決方案資源管理器工具欄中,右鍵單擊 Package.dtsx ,再單擊“重命名”,將默認包重命名為 Lesson 1.dtsx

? 當系統提示重命名包對象時,單擊“是”。

3. SSIS 包添加數據源(導入數據的源和目標數據源)

? 首先添加導入數據的源

? 右鍵單擊“連接管理器”區域中的任意位置,再單擊“新建平面文件連接”。

? 在“平面文件連接管理器編輯器”對話框的“連接管理器名稱”字段中,鍵入 Source

? 單擊“瀏覽”。

? 在“打開”對話框中,瀏覽并找到“ d:\test\t1.txt ”文件。

? “常規”選項中,勾選“在第 1 個數據行中顯示列名稱”。

? “高級”選項中,選擇“ id ”列,將數據類型設置為“ four-byte single integer[DT_I4] ”。

? “高級”選項中,選擇“ name ”列,將數據類型設置為“ Unicode string[DT_WSTR] ”。

? 然后,你可以在“預覽”中查看數據是否正確。

? 然后添加接收數據的目的數據源

? 右鍵單擊連接管理器區域中的任意位置,再單擊“新建 OLE DB 連接

? 配置 OLE DB 連接管理器 對話框中,單擊 新建

? 服務器名稱 中,輸入 localhost

? localhost 指定為服務器名稱時,連接管理器將連接到本地計算機上 Microsoft SQL Server 2005 的默認實例。若要使用 SQL Server 2005 的遠程實例,請將 localhost 替換為要連接到的服務器的名稱。

? 登錄到服務器 組中,確認選擇了 使用 Windows 身份驗證

? 連接到數據庫 組的 選擇或輸入數據庫名稱 框中,鍵入或選擇 tempdb

? 單擊 測試連接 ,驗證指定的連接設置是否有效。

? 單擊 確定

? 單擊 確定

? 配置 OLE DB 連接管理器 對話框的 數據連接 窗格中,確認選擇了 localhost.tempdb

? 單擊 確定

4. SSIS 包添加數據流任務

? 單擊“控制流”選項卡。

? 在“工具箱”中,展開“控制流項”,并將一個數據流任務拖到“控制流”選項卡的設計圖面上。

? 在“控制流”設計圖面中,右鍵單擊新添加的數據流任務,再單擊“重命名”,將名稱更改為 Import Data

5. 在數據流任務中設置數據流源

? 打開“數據流”設計器,方法是雙擊 Import Data 數據流任務或單擊 數據流 選項卡。

? 工具箱 中,展開 數據流源 ,然后將 平面文件源 拖動到 數據流 選項卡的設計圖面上。

? 數據流 設計圖面上,右鍵單擊新添加的 平面文件源 ,單擊 重命名 ,然后將該名稱更改為 Source Data

? 雙擊此平面文件源,打開 平面文件源編輯器 對話框。

? 平面文件連接管理器 框中,鍵入或選擇 Source

? 單擊 并驗證列名是否正確。

? 單擊 確定

6. 在數據流任務中添加查找處理組件

? 在“工具箱”中,展開“數據流轉換”,然后將“查找”拖動到“數據流”選項卡的設計圖面上。將“查找”直接放置在 Source Data 源的下面。

? 單擊 Source Data 平面文件源,并將綠色箭頭拖動到新添加的 查找 轉換中,以連接這兩個組件。

? 數據流 設計圖面上,右鍵單擊新添加的 查找 轉換,單擊 重命名 ,然后將該名稱更改為 Lookup id

? 雙擊 Lookup id 轉換。

? 查找轉換編輯器 對話框的 “OLE DB 連接管理器 框中,確保顯示 localhost.tempdb

? 使用表或視圖 框中,鍵入或選擇 [dbo].[tb]

? 單擊 選項卡。

? 可用輸入列 面板中,將 id 拖放到 可用查找列 面板的 id 上。

? 單擊 確定

7. 在數據流任務中添加插入數據處理需要的目標數據源

? 在“工具箱”中,展開“數據流目標”,并將“ OLE DB 目標 拖到 數據流 選項卡的設計圖面上。將 OLE DB 目標直接放置在 “Lookup id” 轉換的下面。

? 單擊 “Lookup id” 轉換,并將 紅色 箭頭拖到新添加的 “OLE DB 目標 上,以便將兩個組件連接在一起。

? 在出現的 配置錯誤輸出 對話框中,“錯誤”列中選擇“重定向行”

? 單擊 確定

? 數據流 設計圖面上,右鍵單擊新添加的 “OLE DB 目標 組件,單擊 重命名 ,然后將名稱更改為 Insert data

? 雙擊 Insert data

? “OLE DB 目標編輯器 對話框中,確保已在 “OLE DB 連接管理器 框中選中 localhost.tempdb

? 表或視圖的名稱 框中,鍵入或選擇 [dbo].[tb]

? 單擊 映射

? 驗證 id, name 輸入列是否已正確映射到目標列。如果映射了同名列,則說明映射正確。

? 單擊 確定

8. 在數據流任務中添加更新數據處理需要的 OLE DB 命令組件

? 在“工具箱”中,展開“數據流組件轉換”,并將“ OLE DB 命令 拖到 數據流 選項卡的設計圖面上。將 OLE DB 目標直接放置在 “Lookup id” 轉換的下面。

? 單擊 “Lookup id” 轉換,并將 綠色 箭頭拖到新添加的 “OLE DB 命令 上,以便將兩個組件連接在一起。

? 數據流 設計圖面上,右鍵單擊新添加的 “OLE DB 命令 組件,單擊 重命名 ,然后將名稱更改為 Update data

? 雙擊 Update data

? “Update Data 高級編輯器 對話框中,“連接管理”選項的“連接管理器”列中,選中 localhost.tempdb

? 在“組件屬性”選項中,“自定義屬性”的“ SQLCommand ”屬性中輸入:

UPDATE dbo . tb SET name = ? WHERE id = ?

? 列映射 選項中,設置“輸入列”,將 name 映射到 param_0 ,將 id 映射到 param_1 。注: param_0 對應 UPDAT 語句中的第 1 ? ,而 param_1 對應 UPDATE 語句中的第 2 ? ,這是固定的。

? 單擊 確定

9. 測試

? 按“ F5 ”執行 SSIS

? 執行結束(所有的組件都變為綠色),你會看到數據流向“ Inset Data” 的有兩條數據

? 雙擊“連接管理器”中的 Source ,重新設置文件名為 D:\test\d2.txt

? 單擊“確定”

? 按“ Ctrl+Shift+F<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="”"><font face="Times New Roman">5</font><span lang="EN-US" style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US">”</span></span></chmetcnv> ,重新啟動 SSIS

? 執行結束(所有的組件都變為綠色),你會看到數據流向“ Inset Data” 的有兩條數據,流向“ Update Data ”的有 1 條數據

? 最后,在數據庫中查詢 tempdb.dbo.tb ,驗證數據導入的正確性

10. 添加循環,一次完成 test 目錄下所有文件的導入

<span style=

分享到:
評論

SSIS處理導入數據時, 存在的更新, 不存在的插入


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品美女久久久久久免费 | 亚洲精品专区 | 亚洲国产成人精品女人 | 国产福利一区二区在线精品 | 97超视频在线观看 | 国产精品久久久久一区二区 | 久久97精品久久久久久久看片 | 日韩午夜在线 | 91高清视频在线免费观看 | 午夜性色一区二区三区不卡视频 | 96久久久久久 | 高清午夜线观看免费 | 日韩精品视频在线 | 看个毛片| 欧美一级www| www.久久久 | 日本精品久久久久久久 | 亚洲 日本 欧美 中文幕 | 日日干夜夜干 | 亚州av在线 | 亚洲精品久久久 | 国产高清在线精品一区二区三区 | 国产1区2区3区 | 泰国一级毛片aaa下面毛多 | 亚洲爽 | 妈妈的朋友酷客影响 | av资源中文在线 | 国产美女亚洲精品久久久综合 | 青草福利 | 中文字幕一区在线观看视频 | 福利片在线观看 | 免费观看一级特黄欧美大片 | 国产色综合一区二区三区 | 成人爱爱电影 | 国产一区在线免费观看 | 久久久久国产视频 | 5g影视天天看最新网站 | 国产91影院 | 亚洲精品自产拍在线观看app | 色人人| 国产免费观看一区二区三区 |