在 Excel 上:
您可以使用「名稱(Name)」,讓公式更容易了解及維護。
您可以為儲存格範圍、函數、常數或資料表定義名稱。
一旦採取在活頁簿中使用名稱的做法以後,就可以輕鬆更新、稽核及管理這些名稱。
可以使用「公式(Formulas)」頁籤的「名稱管理員(Name Manager)」來管理與設計。
在 SSIS 的「Excel 來源」或「Excel 目的地」資料項目:
Excel 活頁簿中資料的來源可以是工作表 (必須附加 $ 符號,例如 Sheet1$) 或已「命名的範圍(Named range)」 (例如 MyRange)。
在 SQL 陳述式中,工作表的名稱必須加以分隔 (例如 [Sheet1$]),以避免 $ 符號造成的語法錯誤。
「查詢產生器」會自動加入這些分隔符號。
當您指定工作表或範圍時,驅動程式會讀取連續的資料格區塊,從工作表或範圍左上角的第一個非空白資料格開始。
因此,來源資料的資料列不可以空白,或標題或標頭資料列與資料列之間不可以有空白資料列。
在 Excel 中,工作表或範圍相當於資料表或檢視。
「Excel 來源」及「Excel 目的地」編輯器中的可用資料表清單,僅會顯示現有工作表 (以附加到工作表名稱的 $ 符號識別,例如 Sheet1$) 及具名範圍(Named range) (以沒有 $ 符號的方式識別,例如 MyRange)。
綜合前述
可以先在 Excel 上,利用「公式(Formulas)」頁籤的「名稱管理員(Name Manager)」來管理與設計資料的區域。
之後,在 SSIS 封裝上的「Excel 來源」或「Excel 目的地」上,就可以使用這些「名稱」來存取指定的資料區塊。
示範環境:
1. Excel 2010。
2. SSIS 2008。
以下是使用 Excel 上的「公式(Formulas)」頁籤的「名稱管理員(Name Manager)」來管理與設計資料之區域。
-- 01_設定好的名稱管理員_視窗
之後,在 SSIS 封裝上的「Excel 來源」或「Excel 目的地」上,就可以使用這些「名稱」來存取指定的資料區塊。
-- 02_Region_選擇指定工作表,點選「預覽」
-- 03_Shippers_選擇指定工作表,點選「預覽」
-- 04_選取整個「工作表」
參考資料:
定義及使用公式中的名稱
http://office.microsoft.com/zh-tw/excel-help/HA010147120.aspx
Excel 來源
http://msdn.microsoft.com/zh-tw/library/ms141683.aspx
Excel 目的地
http://msdn.microsoft.com/zh-tw/library/ms137643.aspx
SSIS:認識 Excel 公式的「名稱(Name)」、工作表(Worksheet)、具名範圍(Named Range) -- 圖文版本
http://sharedderrickref.blogspot.com/2012/03/ssis-excel-nameworksheetnamed-range.html
搜尋本站文章
2012-03-06
2012-02-05
SSIS:Excel 來源有資料,但匯入到資料庫後卻是 NULL;設定連線字串 IMEX 與 登錄機碼 TypeGuessRows
請先參考以下的文章:
Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html
以下提供 SSIS 在「資料來源」項目上的連線字串之設定:
-- 01_Jet.OLEDB.4.0 資料提供者_xls_使用IMEX
-- 02_ACE.OLEDB.12.0 資料提供者_xlsx_使用IMEX
可能作法:
若不考慮對於效能的影響,可以使用以下的方式來設定:
1. 修改 登錄機碼:TypeGuessRows 的值為 0。
2. 在連線字串上,加入設定參數:IMEX = 1。
讓 Excel 資料提供者掃描來源資料列的筆數,可達到:16384。
在使用「Excel 來源」項目時,預設一開始是沒有加入參數 IMEX 的。
在「Excel 來源」項目上,點選「預覽」,看到的資料會是 NULL。
若僅是使用「Excel 來源」項目,異動調整連線字串加參數 IMEX,BIDS 開發工具好像沒有偵測到此參數的異動。
或許,請先入一個「轉換」項目,例如:「複製資料行」 ,加入「資料檢視器」。
再去修改「Excel 來源」項目,加入參數 IMEX 後,BIDS 開發工具應該出現偵測中繼資料變更的視窗。
-- 03_加入IMEX_更新中繼資料
在「Excel 來源」項目上,點選「預覽」,應該可以檢視到資料,而非 NULL。
範例程式碼:
20120205_Excel_NULL_IMEX.7z
參考資料:
Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html
Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html
以下提供 SSIS 在「資料來源」項目上的連線字串之設定:
-- Microsoft.Jet.OLEDB.4.0 資料提供者,Excel 2003,附檔名:xls。 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mySSIS\Ex23_NULL.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX = 1"; -- Microsoft.ACE.OLEDB.12.0 資料提供者,Excel 2010,附檔名:xlsx。 Data Source=C:\mySSIS\Ex27_NULL.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Excel 12.0 Xml;IMEX=1";
-- 01_Jet.OLEDB.4.0 資料提供者_xls_使用IMEX
-- 02_ACE.OLEDB.12.0 資料提供者_xlsx_使用IMEX
可能作法:
若不考慮對於效能的影響,可以使用以下的方式來設定:
1. 修改 登錄機碼:TypeGuessRows 的值為 0。
2. 在連線字串上,加入設定參數:IMEX = 1。
讓 Excel 資料提供者掃描來源資料列的筆數,可達到:16384。
在使用「Excel 來源」項目時,預設一開始是沒有加入參數 IMEX 的。
在「Excel 來源」項目上,點選「預覽」,看到的資料會是 NULL。
若僅是使用「Excel 來源」項目,異動調整連線字串加參數 IMEX,BIDS 開發工具好像沒有偵測到此參數的異動。
或許,請先入一個「轉換」項目,例如:「複製資料行」 ,加入「資料檢視器」。
再去修改「Excel 來源」項目,加入參數 IMEX 後,BIDS 開發工具應該出現偵測中繼資料變更的視窗。
-- 03_加入IMEX_更新中繼資料
在「Excel 來源」項目上,點選「預覽」,應該可以檢視到資料,而非 NULL。
範例程式碼:
20120205_Excel_NULL_IMEX.7z
參考資料:
Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html
2011-12-21
影片:SSIS:認識_取消樞紐轉換(Unpivot transformation)
使用環境:
SQL Server 2008 R2
主題:
認識:取消樞紐轉換(Unpivot transformation)
影片資訊:
原始錄影檔案的解析度: 1024 * 768
目前 YouTube 的解析度: 960 * 720
不包含聲音。
建議:
使用 720p HD + 全螢幕 的方式來觀看。
認識_取消樞紐轉換(Unpivot transformation)
http://youtu.be/ztEltHvxa5A?hd=1
參考資料
樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms140308.aspx
轉換自訂屬性
http://msdn.microsoft.com/zh-tw/library/ms136014.aspx
取消樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms141723.aspx
取消樞紐轉換編輯器
http://msdn.microsoft.com/zh-tw/library/ms186498.aspx
影片:SSIS:認識_樞紐轉換(Pivot transformation)
http://sharedderrick.blogspot.com/2011/12/ssispivot-transformation.html
SSIS:認識:樞紐轉換(Pivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssispivot-transformation.html
SSIS:認識:取消樞紐轉換(Unpivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssisunpivot-transformation.html
SQL Server 2008 R2
主題:
認識:取消樞紐轉換(Unpivot transformation)
影片資訊:
原始錄影檔案的解析度: 1024 * 768
目前 YouTube 的解析度: 960 * 720
不包含聲音。
建議:
使用 720p HD + 全螢幕 的方式來觀看。
認識_取消樞紐轉換(Unpivot transformation)
http://youtu.be/ztEltHvxa5A?hd=1
參考資料
樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms140308.aspx
轉換自訂屬性
http://msdn.microsoft.com/zh-tw/library/ms136014.aspx
取消樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms141723.aspx
取消樞紐轉換編輯器
http://msdn.microsoft.com/zh-tw/library/ms186498.aspx
影片:SSIS:認識_樞紐轉換(Pivot transformation)
http://sharedderrick.blogspot.com/2011/12/ssispivot-transformation.html
SSIS:認識:樞紐轉換(Pivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssispivot-transformation.html
SSIS:認識:取消樞紐轉換(Unpivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssisunpivot-transformation.html
2011-12-20
影片:SSIS:認識_樞紐轉換(Pivot transformation)
使用環境:
SQL Server 2008 R2
主題:
認識:樞紐轉換(Pivot transformation)
影片資訊:
原始錄影檔案的解析度: 1024 * 768
目前 YouTube 的解析度: 960 * 720
不包含聲音。
建議:
使用 720p HD + 全螢幕 的方式來觀看。
認識_樞紐轉換(Pivot transformation)
http://youtu.be/Fx7ZsquyGvc?hd=1
參考資料
樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms140308.aspx
轉換自訂屬性
http://msdn.microsoft.com/zh-tw/library/ms136014.aspx
取消樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms141723.aspx
取消樞紐轉換編輯器
http://msdn.microsoft.com/zh-tw/library/ms186498.aspx
SSIS:認識:樞紐轉換(Pivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssispivot-transformation.html
SQL Server 2008 R2
主題:
認識:樞紐轉換(Pivot transformation)
影片資訊:
原始錄影檔案的解析度: 1024 * 768
目前 YouTube 的解析度: 960 * 720
不包含聲音。
建議:
使用 720p HD + 全螢幕 的方式來觀看。
認識_樞紐轉換(Pivot transformation)
http://youtu.be/Fx7ZsquyGvc?hd=1
參考資料
樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms140308.aspx
轉換自訂屬性
http://msdn.microsoft.com/zh-tw/library/ms136014.aspx
取消樞紐轉換
http://msdn.microsoft.com/zh-tw/library/ms141723.aspx
取消樞紐轉換編輯器
http://msdn.microsoft.com/zh-tw/library/ms186498.aspx
SSIS:認識:樞紐轉換(Pivot transformation) -- 實作練習_版本
http://sharedderrickref.blogspot.com/2011/12/ssispivot-transformation.html
SSIS:64 位元 Excel 2010 與 BIDS 開發工具
SSIS 2008、SSIS 2008 R2,使用的開發工具是:Visual Studio 2008,也就是 SQL Server Business Intelligence Development Studio(BIDS)。
但目前 Visual Studio 2008 僅有 32 位元版本,因此,BIDS 也是 32 位元版本,這表示也僅能使用 32 位元版本的 OLE DB 驅動程式。
雖然在 Excel 2010 版本上,提供了 32 位元與 64 位元版本的 OLE DB 驅動程式。
Excel 2007、Excel 2010 不是使用 Microsoft Jet 4.0 驅動程式,而是使用 Access Database Engine (ACE) OLE DB 驅動程式。
但在使用 Visual Studio 2008 開發封裝上,是無法直接使用 64 位元版本的 OLE DB 驅動程式。
可能的作法:
(一) 在 SSIS 伺服器
在 SSIS 伺服器上安裝 64 位元版本的 Access Database Engine 2010 (ACE) OLE DB 驅動程式。
(二) 在開發人員環境
(1) 若是安裝 32 位元版本的 Access Database Engine (ACE)
這會是平順地開發 SSIS 封裝的作法。
雖然是在 32 位元環境上開發,但若是 BIDS 上執行此 SSIS 封裝,預設會使用 64 位元環境來執行封裝,請設定屬性:Run64BitRuntime 為 False。
-- 01_調整為 32 模式來執行封裝
若是將封裝部署到 SSIS 伺服器上,是無需調整,可以使用 64 位元模式來執行此封裝。
在 BIDS 上執行此 SSIS 封裝,預設會使用 64 位元環境來執行,請設定屬性:Run64BitRuntime 為 False。
--
若仍是使用預設的 64 位模式來執行,將遭遇到以下的錯誤訊息:
-- 06_未安裝 64 位元驅動程式,卻使用 64 模式來執行
(2) 若是安裝 64 位元版本的 Access Database Engine (ACE)
由於 Visual Studio 2008 不支援 64 位元,但是可以採用變通的開發封裝之作法:
1. 使用「匯入和匯出資料 (64 位元)」來建立此封裝的雛形。
2. 再使用 BIDS 開啟與設計此封裝,應該仍是可以正常運作,但有以下的注意事項。
-- 02_使用「匯入和匯出資料 (64 位元)」
若使用 BISD 開啟此封裝,編輯使用 Access Database Engine 2010 OLE DB 驅動程式的資料來源,將遭遇到以下的錯誤訊息:
-- 03_編輯使用 Access Database Engine 2010 OLE DB 驅動程式的資料來源,所遇到的錯誤訊息
-- 04_進階資訊
-- 05_點選「預覽」的錯誤
--
若是在安裝 64 位元版本的 Access Database Engine 2010 (ACE) OLE DB 驅動程式的環境,使用 BIDS 執行此封裝,卻刻意調整屬性:Run64BitRuntime 為 False。
將遭遇到以下的錯誤訊息:
-- 07_已安裝64位元驅動程式,卻刻意用32位元模式來執行
觀念說明
雖然 Visual Studio 2008 僅有 32 位元版本。
但在使用 BIDS 來執行 SSIS 封裝時,所使用的程式是:
(1) DtsDebugHost.exe
此為 64 位元版本。
(2) DtsDebugHost.exe * 32
此為 32 位元版本。
-- 08_使用32位元模式,「Windows 工作管理員」
-- 09_使用64位元模式,「Windows 工作管理員」
依據預設值:
若作業系統上已經先安裝了 32 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」,是無法額外安裝 64 位元版本的「Microsoft Access Database Engine 2010 可轉散發套件」。
同樣的,若是先安裝了 64 位元版本後,也無法再將安裝 32 位元版本。
但之前曾經嘗試過以下的作法:
1. 先安裝 32 位元版本 Office 2007。
2. 移除 32 位元版本 Office 2007。
3. 再安裝 64 位元版本 Office 2010。
或是
1. 先安裝 32 位元版本的Microsoft Access Database Engine 2007 可轉散發套件。
2. 再安裝 64 位元版本的Microsoft Access Database Engine 2010 可轉散發套件。
或許,就可以讓 32 位元與 64 位元的 「Microsoft Access Database Engine 2010 可轉散發套件」並存在同一套作業系統上。
參考資料:
檢查是否已經安裝 「Microsoft Access Database Engine 2010 可轉散發套件」驅動程式;Microsoft Access Database Engine 2010 Redistributable
http://sharedderrick.blogspot.com/2011/08/microsoft-access-database-engine-2010.html
SSIS:使用 Excel 2010 (例如:附檔名為 xlsx)為來源或是目的地
http://sharedderrick.blogspot.com/2011/10/ssis-excel-2010-xlsx.html
Microsoft Access Database Engine 2010 可轉散發套件
http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displayLang=zh-tw
Service Pack 1 for Microsoft Access Database Engine 2010 (KB2460011) 32-bit Edition - 中文(繁體)
http://www.microsoft.com/downloads/zh-tw/details.aspx?FamilyID=b663a458-2fe9-4d45-9c2d-992298fe4434
但目前 Visual Studio 2008 僅有 32 位元版本,因此,BIDS 也是 32 位元版本,這表示也僅能使用 32 位元版本的 OLE DB 驅動程式。
雖然在 Excel 2010 版本上,提供了 32 位元與 64 位元版本的 OLE DB 驅動程式。
Excel 2007、Excel 2010 不是使用 Microsoft Jet 4.0 驅動程式,而是使用 Access Database Engine (ACE) OLE DB 驅動程式。
但在使用 Visual Studio 2008 開發封裝上,是無法直接使用 64 位元版本的 OLE DB 驅動程式。
可能的作法:
(一) 在 SSIS 伺服器
在 SSIS 伺服器上安裝 64 位元版本的 Access Database Engine 2010 (ACE) OLE DB 驅動程式。
(二) 在開發人員環境
(1) 若是安裝 32 位元版本的 Access Database Engine (ACE)
這會是平順地開發 SSIS 封裝的作法。
雖然是在 32 位元環境上開發,但若是 BIDS 上執行此 SSIS 封裝,預設會使用 64 位元環境來執行封裝,請設定屬性:Run64BitRuntime 為 False。
-- 01_調整為 32 模式來執行封裝
若是將封裝部署到 SSIS 伺服器上,是無需調整,可以使用 64 位元模式來執行此封裝。
在 BIDS 上執行此 SSIS 封裝,預設會使用 64 位元環境來執行,請設定屬性:Run64BitRuntime 為 False。
--
若仍是使用預設的 64 位模式來執行,將遭遇到以下的錯誤訊息:
[myOrders_Excel_2010 [1]] 錯誤: SSIS 錯誤碼 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 對 "myOrders_Excel_2010" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0209303。 在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。 [SSIS.Pipeline] 錯誤: 元件 "myOrders_Excel_2010" (1) 驗證失敗,傳回錯誤碼 0xC020801C。 [連接管理員 "myOrders_Excel_2010"] 錯誤: SSIS 錯誤碼 DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR。 要求的 OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 並未註冊 -- 可能是沒有 64 位元提供者可用。 錯誤碼: 0x00000000。 有 OLE DB 記錄可用。來源: "Microsoft OLE DB Service Components" Hresult: 0x80040154 描述: "類別未登錄"。
-- 06_未安裝 64 位元驅動程式,卻使用 64 模式來執行
(2) 若是安裝 64 位元版本的 Access Database Engine (ACE)
由於 Visual Studio 2008 不支援 64 位元,但是可以採用變通的開發封裝之作法:
1. 使用「匯入和匯出資料 (64 位元)」來建立此封裝的雛形。
2. 再使用 BIDS 開啟與設計此封裝,應該仍是可以正常運作,但有以下的注意事項。
-- 02_使用「匯入和匯出資料 (64 位元)」
若使用 BISD 開啟此封裝,編輯使用 Access Database Engine 2010 OLE DB 驅動程式的資料來源,將遭遇到以下的錯誤訊息:
錯誤位置 新的封裝 [連接管理員 "SourceConnectionOLEDB"]: SSIS 錯誤碼 DTS_E_OLEDB_NOPROVIDER_ERROR。 要求的 OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 並未註冊。錯誤碼: 0x00000000。 有 OLE DB 記錄可用。 來源: "Microsoft OLE DB Service Components" Hresult: 0x80040154 描述: "類別未登錄"。 錯誤位置 資料流程工作 1 [來源 - Orders [1]]: SSIS 錯誤碼 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 對 "SourceConnectionOLEDB" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0209302。 在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。 ------------------------------ 其他資訊: 發生例外狀況於 HRESULT: 0xC020801C (Microsoft.SqlServer.DTSPipelineWrap)
-- 03_編輯使用 Access Database Engine 2010 OLE DB 驅動程式的資料來源,所遇到的錯誤訊息
-- 04_進階資訊
-- 05_點選「預覽」的錯誤
--
若是在安裝 64 位元版本的 Access Database Engine 2010 (ACE) OLE DB 驅動程式的環境,使用 BIDS 執行此封裝,卻刻意調整屬性:Run64BitRuntime 為 False。
將遭遇到以下的錯誤訊息:
[來源 - Orders [1]] 錯誤: SSIS 錯誤碼 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 對 "SourceConnectionOLEDB" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0209302。 在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。 [SSIS.Pipeline] 錯誤: 元件 "來源 - Orders" (1) 驗證失敗,傳回錯誤碼 0xC020801C。 [連接管理員 "SourceConnectionOLEDB"] 錯誤: SSIS 錯誤碼 DTS_E_OLEDB_NOPROVIDER_ERROR。 要求的 OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 並未註冊。錯誤碼: 0x00000000。 有 OLE DB 記錄可用。 來源: "Microsoft OLE DB Service Components" Hresult: 0x80040154 描述: "類別未登錄"。
-- 07_已安裝64位元驅動程式,卻刻意用32位元模式來執行
觀念說明
雖然 Visual Studio 2008 僅有 32 位元版本。
但在使用 BIDS 來執行 SSIS 封裝時,所使用的程式是:
(1) DtsDebugHost.exe
此為 64 位元版本。
(2) DtsDebugHost.exe * 32
此為 32 位元版本。
-- 08_使用32位元模式,「Windows 工作管理員」
-- 09_使用64位元模式,「Windows 工作管理員」
依據預設值:
若作業系統上已經先安裝了 32 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」,是無法額外安裝 64 位元版本的「Microsoft Access Database Engine 2010 可轉散發套件」。
同樣的,若是先安裝了 64 位元版本後,也無法再將安裝 32 位元版本。
但之前曾經嘗試過以下的作法:
1. 先安裝 32 位元版本 Office 2007。
2. 移除 32 位元版本 Office 2007。
3. 再安裝 64 位元版本 Office 2010。
或是
1. 先安裝 32 位元版本的Microsoft Access Database Engine 2007 可轉散發套件。
2. 再安裝 64 位元版本的Microsoft Access Database Engine 2010 可轉散發套件。
或許,就可以讓 32 位元與 64 位元的 「Microsoft Access Database Engine 2010 可轉散發套件」並存在同一套作業系統上。
參考資料:
檢查是否已經安裝 「Microsoft Access Database Engine 2010 可轉散發套件」驅動程式;Microsoft Access Database Engine 2010 Redistributable
http://sharedderrick.blogspot.com/2011/08/microsoft-access-database-engine-2010.html
SSIS:使用 Excel 2010 (例如:附檔名為 xlsx)為來源或是目的地
http://sharedderrick.blogspot.com/2011/10/ssis-excel-2010-xlsx.html
Microsoft Access Database Engine 2010 可轉散發套件
http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displayLang=zh-tw
Service Pack 1 for Microsoft Access Database Engine 2010 (KB2460011) 32-bit Edition - 中文(繁體)
http://www.microsoft.com/downloads/zh-tw/details.aspx?FamilyID=b663a458-2fe9-4d45-9c2d-992298fe4434
2011-12-11
SSIS:認識:合併聯結轉換(Merge Join Transformation)
示範環境:
SSIS 2008 R2。
實作練習:認識:合併聯結轉換(Merge Join Transformation)
工作1:使用資料流程工作,設定資料流程來源
步驟01. 在「封裝設計師」視窗,新增加一個「資料流程」工作。
步驟02. 點選「資料流程」頁面,在左邊的工具箱,由「資料流程來源」區域,拖曳所需的來源物件,設定與其連線的資訊連線。
在本範例中,使用兩個「OLE DB 來源」,分別連接到 Excel 2010 (*.xlsx) 與 Access 2010 (*.accdb) 為例:客戶_Excel 2010、訂單_Access 2010。
-- 01_增加_資料來源
工作2:使用排序轉換
步驟01. 在左邊的工具箱,由「資料流程轉換」區域,選擇「排序」轉換拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料來源:客戶_Excel 2010,將其綠色線路的「資料流程路徑」,拖曳到「排序」轉換。
步驟03. 滑鼠雙擊此「排序」轉換,在「排序轉換編輯器」視窗,勾選要作為排序用的資料行,例如:客戶編號,點選「確定」。
步驟04. 在左邊的工具箱,由「資料流程轉換」區域,選擇「排序」轉換拖曳到右邊的封裝設計師頁面上。
步驟05. 點選資料來源:訂單_Access 2010,將其綠色線路的「資料流程路徑」,拖曳到「排序」轉換。
步驟06. 滑鼠雙擊此「排序」轉換,在「排序轉換編輯器」視窗,勾選要作為排序用的資料行,例如:CustomerID,點選「確定」。
-- 02_設定好排序轉換
工作3:使用合併聯結轉換
步驟01. 在左邊的工具箱,由「資料流程轉換」區域,選擇「合併聯結」轉換,拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料轉換:排序_客戶編號的綠色線路之「資料流程路徑」,拖曳到「合併聯結」轉換。
步驟03. 在「輸入輸出選擇」視窗,在下方的「輸入」區域,下拉選擇:「合併聯結左方輸入」,點選「確定」。
-- 03_設定_「合併聯結」轉換_輸入輸出選擇
步驟04. 點選資料轉換:排序_CustomerID 的綠色線路之「資料流程路徑」,拖曳到「合併聯結」轉換。
步驟05. 滑鼠雙擊此「合併聯結」轉換,在「合併聯結轉換編輯器」視窗,勾選所需抓取的資料行,點選「確定」。
將左輸入中的資料行拖曳至右輸入中的資料行,以指定聯結資料行。
如果這些資料行的名稱相同,則可以選取「聯結索引鍵」核取方塊,「合併聯結」轉換會自動建立聯結。
附註
您可以只在排序位置相同的資料行之間建立聯結,而這些聯結必須以排序位置指定的順序建立。
如果您嘗試不按順序建立聯結,則 [合併聯結轉換編輯器] 會提示您為略過的排序次序位置建立其他聯結。
附註
依預設,輸出會在聯結資料行上進行排序。
例如:
在「聯結類型」,設定選取:內部聯結。
在「排序_客戶編號」,勾選:客戶編號、公司名稱、連絡人、電話。
在「排序_CustomerID 」,勾選:OrderID、OrderDate。
-- 04_準備設定_「合併聯結轉換編輯器」
-- 05_設定_「合併聯結轉換編輯器」
-- 06_設定好_合併聯結
工作4. 使用資料流程目的地
步驟01. 在左邊的工具箱,由「資料流程目的地」區域,選擇「一般檔案目的地」物件,拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料轉換:合併聯結_內部的綠色線路之「資料流程路徑」,拖曳到「一般檔案目的地」物件。
步驟03. 滑鼠雙擊此「一般檔案目的地」物件,設定相關的連線資料。
-- 07_設定好_一般目的地
工作5. 執行封裝
-- 08_執行封裝
-- 09_自動移除未使用的輸出資料行
-- 10_檢視_合併聯結後的成果
認識「合併聯結轉換(Merge Join Transformation)」
合併聯結轉換提供藉由使用 FULL、LEFT 或 INNER 聯結,來聯結兩個已排序資料集所產生的輸出。
您可以利用下列方式設定「合併聯結」轉換:
(A) 指定聯結為 FULL、LEFT 或 INNER 聯結。
(B) 指定聯結使用的資料行。
(C) 指定轉換是否要將 Null 值當作相當於其他 Null 處理。
附註:
如果 Null 值未當成相等值,則轉換會以與 SQL Server Database Engine 相同的方式處理 Null 值。
這個轉換有兩個輸入與一個輸出。它不支援錯誤輸出。
--
輸入需求
合併聯結轉換針對其輸入需要已排序的資料
聯結需求
合併聯結轉換會要求聯結的資料行擁有相符的中繼資料。例如,您無法聯結數值資料類型的資料行,與字元資料類型的資料行。
如果資料是字串資料類型,第二個輸入中的資料行長度就必須小於或等於與其合併之第一個輸入中的資料行長度。
--
以下整理了幾個錯誤設定:
(1) 若是刻意加入第三條資料來源
將遭遇以下的錯誤訊息:
-- 11_第三個資料來源_輸入
(2) 若是資料來源沒有排序
將遭遇以下的錯誤訊息:
-- 12_輸入未排序_錯誤
-- 13_輸入未排序_錯誤
(3) 若使用非聯結用的資料行來做排序
例如:
一個是:OrderID,一個是:客戶編號,兩者資料類型也不同。
-- 14_使用不同的資料行_排序
-- 15_轉換的兩個輸入至少必須包含一個排序資料行,且資料行必須有相符的中繼資料
參考資料:
合併聯結轉換
http://msdn.microsoft.com/zh-tw/library/ms141775.aspx
如何:排序合併和合併聯結轉換的資料
http://msdn.microsoft.com/zh-tw/library/ms137653.aspx
SSIS 2008 R2。
實作練習:認識:合併聯結轉換(Merge Join Transformation)
工作1:使用資料流程工作,設定資料流程來源
步驟01. 在「封裝設計師」視窗,新增加一個「資料流程」工作。
步驟02. 點選「資料流程」頁面,在左邊的工具箱,由「資料流程來源」區域,拖曳所需的來源物件,設定與其連線的資訊連線。
在本範例中,使用兩個「OLE DB 來源」,分別連接到 Excel 2010 (*.xlsx) 與 Access 2010 (*.accdb) 為例:客戶_Excel 2010、訂單_Access 2010。
-- 01_增加_資料來源
工作2:使用排序轉換
步驟01. 在左邊的工具箱,由「資料流程轉換」區域,選擇「排序」轉換拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料來源:客戶_Excel 2010,將其綠色線路的「資料流程路徑」,拖曳到「排序」轉換。
步驟03. 滑鼠雙擊此「排序」轉換,在「排序轉換編輯器」視窗,勾選要作為排序用的資料行,例如:客戶編號,點選「確定」。
步驟04. 在左邊的工具箱,由「資料流程轉換」區域,選擇「排序」轉換拖曳到右邊的封裝設計師頁面上。
步驟05. 點選資料來源:訂單_Access 2010,將其綠色線路的「資料流程路徑」,拖曳到「排序」轉換。
步驟06. 滑鼠雙擊此「排序」轉換,在「排序轉換編輯器」視窗,勾選要作為排序用的資料行,例如:CustomerID,點選「確定」。
-- 02_設定好排序轉換
工作3:使用合併聯結轉換
步驟01. 在左邊的工具箱,由「資料流程轉換」區域,選擇「合併聯結」轉換,拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料轉換:排序_客戶編號的綠色線路之「資料流程路徑」,拖曳到「合併聯結」轉換。
步驟03. 在「輸入輸出選擇」視窗,在下方的「輸入」區域,下拉選擇:「合併聯結左方輸入」,點選「確定」。
-- 03_設定_「合併聯結」轉換_輸入輸出選擇
步驟04. 點選資料轉換:排序_CustomerID 的綠色線路之「資料流程路徑」,拖曳到「合併聯結」轉換。
步驟05. 滑鼠雙擊此「合併聯結」轉換,在「合併聯結轉換編輯器」視窗,勾選所需抓取的資料行,點選「確定」。
將左輸入中的資料行拖曳至右輸入中的資料行,以指定聯結資料行。
如果這些資料行的名稱相同,則可以選取「聯結索引鍵」核取方塊,「合併聯結」轉換會自動建立聯結。
附註
您可以只在排序位置相同的資料行之間建立聯結,而這些聯結必須以排序位置指定的順序建立。
如果您嘗試不按順序建立聯結,則 [合併聯結轉換編輯器] 會提示您為略過的排序次序位置建立其他聯結。
附註
依預設,輸出會在聯結資料行上進行排序。
例如:
在「聯結類型」,設定選取:內部聯結。
在「排序_客戶編號」,勾選:客戶編號、公司名稱、連絡人、電話。
在「排序_CustomerID 」,勾選:OrderID、OrderDate。
-- 04_準備設定_「合併聯結轉換編輯器」
-- 05_設定_「合併聯結轉換編輯器」
-- 06_設定好_合併聯結
工作4. 使用資料流程目的地
步驟01. 在左邊的工具箱,由「資料流程目的地」區域,選擇「一般檔案目的地」物件,拖曳到右邊的封裝設計師頁面上。
步驟02. 點選資料轉換:合併聯結_內部的綠色線路之「資料流程路徑」,拖曳到「一般檔案目的地」物件。
步驟03. 滑鼠雙擊此「一般檔案目的地」物件,設定相關的連線資料。
-- 07_設定好_一般目的地
工作5. 執行封裝
-- 08_執行封裝
-- 09_自動移除未使用的輸出資料行
-- 10_檢視_合併聯結後的成果
認識「合併聯結轉換(Merge Join Transformation)」
合併聯結轉換提供藉由使用 FULL、LEFT 或 INNER 聯結,來聯結兩個已排序資料集所產生的輸出。
您可以利用下列方式設定「合併聯結」轉換:
(A) 指定聯結為 FULL、LEFT 或 INNER 聯結。
(B) 指定聯結使用的資料行。
(C) 指定轉換是否要將 Null 值當作相當於其他 Null 處理。
附註:
如果 Null 值未當成相等值,則轉換會以與 SQL Server Database Engine 相同的方式處理 Null 值。
這個轉換有兩個輸入與一個輸出。它不支援錯誤輸出。
--
輸入需求
合併聯結轉換針對其輸入需要已排序的資料
聯結需求
合併聯結轉換會要求聯結的資料行擁有相符的中繼資料。例如,您無法聯結數值資料類型的資料行,與字元資料類型的資料行。
如果資料是字串資料類型,第二個輸入中的資料行長度就必須小於或等於與其合併之第一個輸入中的資料行長度。
--
以下整理了幾個錯誤設定:
(1) 若是刻意加入第三條資料來源
將遭遇以下的錯誤訊息:
無法建立連接子。 目的地元件沒有任何可用的輸入可用來建立路徑。
-- 11_第三個資料來源_輸入
(2) 若是資料來源沒有排序
將遭遇以下的錯誤訊息:
錯誤 1 驗證錯誤。資料流程工作: 資料流程工作: 輸入未排序。必須排序 "輸入 "合併聯結左方輸入" (130)" 錯誤 2 驗證錯誤。資料流程工作 合併聯結 [129]: 輸入未排序。必須排序 "輸入 "合併聯結左方輸入" (130)"。
-- 12_輸入未排序_錯誤
-- 13_輸入未排序_錯誤
(3) 若使用非聯結用的資料行來做排序
例如:
一個是:OrderID,一個是:客戶編號,兩者資料類型也不同。
無法開啟: 轉換的兩個輸入至少必須包含一個排序資料行,且資料行必須有相符的中繼資料。
-- 14_使用不同的資料行_排序
-- 15_轉換的兩個輸入至少必須包含一個排序資料行,且資料行必須有相符的中繼資料
參考資料:
合併聯結轉換
http://msdn.microsoft.com/zh-tw/library/ms141775.aspx
如何:排序合併和合併聯結轉換的資料
http://msdn.microsoft.com/zh-tw/library/ms137653.aspx
2011-09-18
使用「指令碼工作(Script Task)」,讀取外部文字檔案
使用環境:
SQL Server 2008
SQL Server 2008 R2
請參考以下的實作練習:
實作練習:使用「指令碼工作(Script Task)」,讀取外部文字檔案
範例說明:
需求:讀取外部文字檔案的資料
準備工作:
步驟01. 將來源的文字檔案,放置到路徑:"C:\mySSIS\myProducts.txt"。
--01
工作一:使用「指令碼工作」
步驟01. 新增加一個封裝程式。
步驟02. 在「控制流程」頁面,新增加一個「指令碼工作」。
步驟03. 選取此「指令碼工作」,滑鼠右鍵,選擇「編輯」。
步驟04. 在「指令碼工作編輯器」視窗,點選右下角的「編輯指令碼」。
步驟05. 在「ssisscript - xxx(系統管理員)」視窗,輸入以下的範例程式碼:
步驟06. 在上方工具列選單,點選「檔案」\「結束」。
步驟07. 在「指令碼工作編輯器」視窗,點選「確定」。
步驟08. 執行偵錯此封裝。
--02
參考資料
.NET Framework 檔案 I/O 和檔案系統基本概念
http://msdn.microsoft.com/zh-tw/library/ms172745(v=VS.90).aspx
用於 .NET Framework 檔案 I/O 和檔案系統的類別
http://msdn.microsoft.com/zh-tw/library/ms172746(v=VS.90).aspx
處理磁碟、目錄和檔案
http://msdn.microsoft.com/zh-tw/library/9chk30w7(v=VS.90).aspx
HOW TO:從檔案讀取文字
http://msdn.microsoft.com/zh-tw/library/db5x7c0d(v=VS.90).aspx
使用 Visual Basic 存取檔案
http://msdn.microsoft.com/zh-tw/library/y32kbeb6(v=VS.90).aspx
在 Visual Basic 中讀取檔案
http://msdn.microsoft.com/zh-tw/library/wz100x8w(v=VS.90).aspx
HOW TO:在 Visual Basic 中從文字檔讀取
http://msdn.microsoft.com/zh-tw/library/a77w6kkx(v=VS.90).aspx
HOW TO:在 Visual Basic 中從逗號分隔文字檔讀取
http://msdn.microsoft.com/zh-tw/library/cakac7e6(v=VS.90).aspx
HOW TO:在 Visual Basic 中從固定寬度的文字檔讀取
http://msdn.microsoft.com/zh-tw/library/zezabash(v=VS.90).aspx
HOW TO:在 Visual Basic 中以多種格式從文字檔讀取
http://msdn.microsoft.com/zh-tw/library/w30ffays(v=VS.90).aspx
HOW TO:在 Visual Basic 中從二進位檔案讀取
http://msdn.microsoft.com/zh-tw/library/9tk3bdxw(v=VS.90).aspx
HOW TO:從我的文件中從現有的文字檔讀取 (Visual Basic)
http://msdn.microsoft.com/zh-tw/library/793fw93z(v=VS.90).aspx
HOW TO:以 StreamReader 從檔案讀取文字 (Visual Basic)
http://msdn.microsoft.com/zh-tw/library/yw67h925(v=VS.90).aspx
SQL Server 2008
SQL Server 2008 R2
請參考以下的實作練習:
實作練習:使用「指令碼工作(Script Task)」,讀取外部文字檔案
範例說明:
需求:讀取外部文字檔案的資料
準備工作:
步驟01. 將來源的文字檔案,放置到路徑:"C:\mySSIS\myProducts.txt"。
--01
工作一:使用「指令碼工作」
步驟01. 新增加一個封裝程式。
步驟02. 在「控制流程」頁面,新增加一個「指令碼工作」。
步驟03. 選取此「指令碼工作」,滑鼠右鍵,選擇「編輯」。
步驟04. 在「指令碼工作編輯器」視窗,點選右下角的「編輯指令碼」。
步驟05. 在「ssisscript - xxx(系統管理員)」視窗,輸入以下的範例程式碼:
...
Public Sub Main()
'
' Add your code here
'此範例會開啟檔案 myProducts.txt,從此檔案中讀取一行,再將該行顯示在 MessageBox 中。
Dim fileReader As System.IO.StreamReader
fileReader = My.Computer.FileSystem.OpenTextFileReader("C:\\myProducts.txt")
Dim stringReader As String
stringReader = fileReader.ReadLine()
MessageBox.Show("The first line of the file is:" & stringReader)
Dts.TaskResult = ScriptResults.Success
End Sub
步驟06. 在上方工具列選單,點選「檔案」\「結束」。
步驟07. 在「指令碼工作編輯器」視窗,點選「確定」。
步驟08. 執行偵錯此封裝。
--02
參考資料
.NET Framework 檔案 I/O 和檔案系統基本概念
http://msdn.microsoft.com/zh-tw/library/ms172745(v=VS.90).aspx
用於 .NET Framework 檔案 I/O 和檔案系統的類別
http://msdn.microsoft.com/zh-tw/library/ms172746(v=VS.90).aspx
處理磁碟、目錄和檔案
http://msdn.microsoft.com/zh-tw/library/9chk30w7(v=VS.90).aspx
HOW TO:從檔案讀取文字
http://msdn.microsoft.com/zh-tw/library/db5x7c0d(v=VS.90).aspx
使用 Visual Basic 存取檔案
http://msdn.microsoft.com/zh-tw/library/y32kbeb6(v=VS.90).aspx
在 Visual Basic 中讀取檔案
http://msdn.microsoft.com/zh-tw/library/wz100x8w(v=VS.90).aspx
HOW TO:在 Visual Basic 中從文字檔讀取
http://msdn.microsoft.com/zh-tw/library/a77w6kkx(v=VS.90).aspx
HOW TO:在 Visual Basic 中從逗號分隔文字檔讀取
http://msdn.microsoft.com/zh-tw/library/cakac7e6(v=VS.90).aspx
HOW TO:在 Visual Basic 中從固定寬度的文字檔讀取
http://msdn.microsoft.com/zh-tw/library/zezabash(v=VS.90).aspx
HOW TO:在 Visual Basic 中以多種格式從文字檔讀取
http://msdn.microsoft.com/zh-tw/library/w30ffays(v=VS.90).aspx
HOW TO:在 Visual Basic 中從二進位檔案讀取
http://msdn.microsoft.com/zh-tw/library/9tk3bdxw(v=VS.90).aspx
HOW TO:從我的文件中從現有的文字檔讀取 (Visual Basic)
http://msdn.microsoft.com/zh-tw/library/793fw93z(v=VS.90).aspx
HOW TO:以 StreamReader 從檔案讀取文字 (Visual Basic)
http://msdn.microsoft.com/zh-tw/library/yw67h925(v=VS.90).aspx
2011-09-01
SSIS:使用「指令碼元件(Script Component)」來建立資料來源
使用環境:
SQL Server 2008
SQL Server 2008 R2
請參考以下的實作練習:
實作練習:使用「指令碼元件」來建立資料來源
範例說明:
需求:讀取「一般檔案來源」內的資料,執行相關轉換後匯出到「一般檔案目的地」。
工作流程如下:
(1) 使用「一般檔案連接管理員」來接到來源的文字檔案。
(2) 使用「指令碼元件」,設定為其資料來源。
(3) 設定與撰寫此「指令碼元件」內的指令碼程式。
(4) 執行相關轉換後匯出到「一般檔案目的地」。
準備工作:
步驟01. 將來源的文字檔案,放置到路徑:"C:\mySSIS\myProducts.txt"。
工作零:
步驟01. 新增加一個封裝程式。
步驟02. 在「控制流程」頁面,新增加一個「資料流程工作」。
步驟03. 點選「資料流程」頁面。
工作一:使用「一般檔案連接管理員」接到來源資料檔案
步驟01. 在「資料流程」頁面,在左下角的「連接管理員」區域。滑鼠右鍵,選擇「新增一般檔案連接」。
步驟02. 在「一般檔案連接管理員編輯器」視窗,點選「一般」頁面,輸入以下的參數:
在「連接管理員名稱」方塊,輸入:TXT_myProducts。
在「選取檔案並指定檔案屬性和檔案格式」區域,在「檔案名稱」方塊,輸入:C:\mySSIS\myProducts.txt。
其餘接受預設值,再點選「資料行」、「進階」、「預覽」等頁面。
點選「確定」。
工作二:使用「指令碼元件」,設定為資料來源
步驟01. 在左邊的「工具箱」,展開「資料流程轉換」區域,選取「指令碼元件」,拖曳到「資料流程」頁面。
步驟02. 在「選取指令碼元件類型」視窗,在「指令資料流程中如何使用指令碼」區域,點選「來源」。
--01_在「選取指令碼元件類型」視窗
點選「確定」。
步驟03. 在「指令碼轉換編輯器」視窗,在左邊窗格,點選「輸入及輸出」頁籤,輸入以下的參數:
在中間的「指定指令碼元件的資料行屬性」區域,在「輸入及輸出」區域。
在中間窗格,點選與展開「輸出 0」節點。
在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:myProductsOutput。
在中間窗格,點選「輸出資料行」節點。在下方區域,點選「加入資料行」。
點選新增加的「資料行」,在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:ProductID。
在「資料類型屬性」區域,在「DataType」方塊,設定為:四位元組帶正負號的整數 [DT_I4]。
在中間窗格,點選「輸出資料行」節點。在下方區域,點選「加入資料行」。
點選新增加的「資料行」,在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:ProductName。
在「資料類型屬性」區域,在「DataType」方塊,設定為:字串 [DT_STR]。
在「Length」方塊,設定為:40。
--02 「輸入及輸出」頁籤,尚未設定
--03_設定ProductID
--04_設定ProductName
步驟04. 在左邊窗格,點選「連接管理員」頁籤,輸入以下的參數:
在右下角,點選「加入」。
在中間窗格,在「名稱」方塊,輸入:MyFlatFileSrcConnectionManager。
在中間窗格,在「連接管理員」方塊,下拉選取先前建立的一般檔案連接:TXT_myProducts。
--05_一般檔案連接:TXT_myProducts
步驟05. 在左邊窗格,點選「指令碼」頁籤,在「ScriptLanguage」方塊,選擇:Microsoft Visual Basic 2008。
在下方,點選「編輯指令碼」,輸入以下的指令碼:
步驟06. 在上方工具列選單,點選「檔案」\「結束」。
步驟07. 在「指令碼轉換編輯器」視窗,點選「確定」。
工作三:設定「一般檔案目的地」與執行封裝
步驟01. 在左邊的「工具箱」,展開「資料流程目的地」區域,選取「一般檔案目的地」,拖曳到「資料流程」頁面。
步驟02. 點選先前建立的「指令碼元件」,拖曳綠色的「資料流程路徑」到「一般檔案目的地」上。
步驟03. 點選此「一般檔案目的地」,設定以下的選項:
在「一般檔案目的地編輯器」視窗,在左邊窗格,點選「連接管理員」。點選「新增」。
在「一般檔案格式」視窗,點選「使用分隔符號」,點選「確定」。
在「一般檔案連接管理員編輯器」視窗,在「連接管理員名稱」方塊,輸入:TXT_Output_myProducts。
在「檔案名稱」方塊,輸入:C:\mySSIS\TXT_Output_myProducts.txt。
分別點選「資料行」、「進階」、「預覽」等頁籤。
點選「確定」。
步驟04. 點選「對應」頁籤,點選「確定」。
--06_「一般檔案目的地」_對應
步驟05. 執行偵錯此封裝。
--07 檢視所設計的封裝
--08_檢視匯出的文字檔案
參考資料:
使用指令碼擴充封裝
http://msdn.microsoft.com/zh-tw/library/ms345171.aspx
連接至指令碼工作中的資料來源
http://msdn.microsoft.com/zh-tw/library/ms136018.aspx
開發特定類型的指令碼元件
http://msdn.microsoft.com/zh-tw/library/ms345170.aspx
以指令碼元件建立來源
http://msdn.microsoft.com/zh-tw/library/ms136060.aspx
使用指令碼元件建立同步轉換
http://msdn.microsoft.com/zh-tw/library/ms136114.aspx
使用指令碼元件建立非同步轉換
http://msdn.microsoft.com/zh-tw/library/ms136133.aspx
SQL Server 2008
SQL Server 2008 R2
請參考以下的實作練習:
實作練習:使用「指令碼元件」來建立資料來源
範例說明:
需求:讀取「一般檔案來源」內的資料,執行相關轉換後匯出到「一般檔案目的地」。
工作流程如下:
(1) 使用「一般檔案連接管理員」來接到來源的文字檔案。
(2) 使用「指令碼元件」,設定為其資料來源。
(3) 設定與撰寫此「指令碼元件」內的指令碼程式。
(4) 執行相關轉換後匯出到「一般檔案目的地」。
準備工作:
步驟01. 將來源的文字檔案,放置到路徑:"C:\mySSIS\myProducts.txt"。
工作零:
步驟01. 新增加一個封裝程式。
步驟02. 在「控制流程」頁面,新增加一個「資料流程工作」。
步驟03. 點選「資料流程」頁面。
工作一:使用「一般檔案連接管理員」接到來源資料檔案
步驟01. 在「資料流程」頁面,在左下角的「連接管理員」區域。滑鼠右鍵,選擇「新增一般檔案連接」。
步驟02. 在「一般檔案連接管理員編輯器」視窗,點選「一般」頁面,輸入以下的參數:
在「連接管理員名稱」方塊,輸入:TXT_myProducts。
在「選取檔案並指定檔案屬性和檔案格式」區域,在「檔案名稱」方塊,輸入:C:\mySSIS\myProducts.txt。
其餘接受預設值,再點選「資料行」、「進階」、「預覽」等頁面。
點選「確定」。
工作二:使用「指令碼元件」,設定為資料來源
步驟01. 在左邊的「工具箱」,展開「資料流程轉換」區域,選取「指令碼元件」,拖曳到「資料流程」頁面。
步驟02. 在「選取指令碼元件類型」視窗,在「指令資料流程中如何使用指令碼」區域,點選「來源」。
--01_在「選取指令碼元件類型」視窗
點選「確定」。
步驟03. 在「指令碼轉換編輯器」視窗,在左邊窗格,點選「輸入及輸出」頁籤,輸入以下的參數:
在中間的「指定指令碼元件的資料行屬性」區域,在「輸入及輸出」區域。
在中間窗格,點選與展開「輸出 0」節點。
在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:myProductsOutput。
在中間窗格,點選「輸出資料行」節點。在下方區域,點選「加入資料行」。
點選新增加的「資料行」,在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:ProductID。
在「資料類型屬性」區域,在「DataType」方塊,設定為:四位元組帶正負號的整數 [DT_I4]。
在中間窗格,點選「輸出資料行」節點。在下方區域,點選「加入資料行」。
點選新增加的「資料行」,在右邊窗格,在「通用屬性」區域,在「Name」方塊,輸入:ProductName。
在「資料類型屬性」區域,在「DataType」方塊,設定為:字串 [DT_STR]。
在「Length」方塊,設定為:40。
--02 「輸入及輸出」頁籤,尚未設定
--03_設定ProductID
--04_設定ProductName
步驟04. 在左邊窗格,點選「連接管理員」頁籤,輸入以下的參數:
在右下角,點選「加入」。
在中間窗格,在「名稱」方塊,輸入:MyFlatFileSrcConnectionManager。
在中間窗格,在「連接管理員」方塊,下拉選取先前建立的一般檔案連接:TXT_myProducts。
--05_一般檔案連接:TXT_myProducts
步驟05. 在左邊窗格,點選「指令碼」頁籤,在「ScriptLanguage」方塊,選擇:Microsoft Visual Basic 2008。
在下方,點選「編輯指令碼」,輸入以下的指令碼:
...
Imports System.IO
...
...
Public Class ScriptMain
Inherits UserComponent
Private textReader As StreamReader
Private exportedAddressFile As String
Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
Dim connMgr As IDTSConnectionManager100 = _
Me.Connections.MyFlatFileSrcConnectionManager
exportedAddressFile = _
CType(connMgr.AcquireConnection(Nothing), String)
End Sub
Public Overrides Sub PreExecute()
MyBase.PreExecute()
textReader = New StreamReader(exportedAddressFile)
End Sub
Public Overrides Sub CreateNewOutputRows()
Dim nextLine As String
Dim columns As String()
Dim delimiters As Char()
delimiters = ",".ToCharArray
nextLine = textReader.ReadLine
Do While nextLine IsNot Nothing
columns = nextLine.Split(delimiters)
With myProductsOutputBuffer
.AddRow()
.ProductID = columns(0)
.ProductName = columns(1)
End With
nextLine = textReader.ReadLine
Loop
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
textReader.Close()
End Sub
End Class
步驟06. 在上方工具列選單,點選「檔案」\「結束」。
步驟07. 在「指令碼轉換編輯器」視窗,點選「確定」。
工作三:設定「一般檔案目的地」與執行封裝
步驟01. 在左邊的「工具箱」,展開「資料流程目的地」區域,選取「一般檔案目的地」,拖曳到「資料流程」頁面。
步驟02. 點選先前建立的「指令碼元件」,拖曳綠色的「資料流程路徑」到「一般檔案目的地」上。
步驟03. 點選此「一般檔案目的地」,設定以下的選項:
在「一般檔案目的地編輯器」視窗,在左邊窗格,點選「連接管理員」。點選「新增」。
在「一般檔案格式」視窗,點選「使用分隔符號」,點選「確定」。
在「一般檔案連接管理員編輯器」視窗,在「連接管理員名稱」方塊,輸入:TXT_Output_myProducts。
在「檔案名稱」方塊,輸入:C:\mySSIS\TXT_Output_myProducts.txt。
分別點選「資料行」、「進階」、「預覽」等頁籤。
點選「確定」。
步驟04. 點選「對應」頁籤,點選「確定」。
--06_「一般檔案目的地」_對應
步驟05. 執行偵錯此封裝。
--07 檢視所設計的封裝
--08_檢視匯出的文字檔案
參考資料:
使用指令碼擴充封裝
http://msdn.microsoft.com/zh-tw/library/ms345171.aspx
連接至指令碼工作中的資料來源
http://msdn.microsoft.com/zh-tw/library/ms136018.aspx
開發特定類型的指令碼元件
http://msdn.microsoft.com/zh-tw/library/ms345170.aspx
以指令碼元件建立來源
http://msdn.microsoft.com/zh-tw/library/ms136060.aspx
使用指令碼元件建立同步轉換
http://msdn.microsoft.com/zh-tw/library/ms136114.aspx
使用指令碼元件建立非同步轉換
http://msdn.microsoft.com/zh-tw/library/ms136133.aspx
2011-08-15
SSIS 上手 03 :初探控制流程(2)
本文是發表於:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/05/12
使用版本:SQL Server 2005
在設計資料轉換程式時,若資料來源是存放在資料夾內的數個檔案時,那我們該如何擷取資料夾內的每一個檔案,當作資料來源進行後續的資料轉換程式設計呢?
在本文中,我們將討論[容器]物件,在[容器]物件內的[Foreach 迴圈容器],讓您可以輕鬆列舉每一個檔案作為資料來源,以利後續的程式處理。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080512_SSIS 上手 03 :初探控制流程(2).7z
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/05/12
使用版本:SQL Server 2005
在設計資料轉換程式時,若資料來源是存放在資料夾內的數個檔案時,那我們該如何擷取資料夾內的每一個檔案,當作資料來源進行後續的資料轉換程式設計呢?
在本文中,我們將討論[容器]物件,在[容器]物件內的[Foreach 迴圈容器],讓您可以輕鬆列舉每一個檔案作為資料來源,以利後續的程式處理。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080512_SSIS 上手 03 :初探控制流程(2).7z
SSIS Lab02:初探 SSIS 方案(3)
本文是發表於:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/03/10
使用版本:SQL Server 2005
本期延續[SSIS Lab02:初探 SSIS 方案(2)],將繼續帶領各位上手使用:
OLE DB 來源、資料列計數、一般檔案目的地、SMTP 連接管理員、事件處理常式、建立註解說明、建置與執行 SSIS 專案、檢視執行狀態期間各元件所顯示的色彩等等事項。
我們延續前一期的實做步驟,請各位開啟先前存檔的專案[mySol2],開啟繼續編輯。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080310_SSIS Lab02:初探 SSIS 方案(3).7z
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/03/10
使用版本:SQL Server 2005
本期延續[SSIS Lab02:初探 SSIS 方案(2)],將繼續帶領各位上手使用:
OLE DB 來源、資料列計數、一般檔案目的地、SMTP 連接管理員、事件處理常式、建立註解說明、建置與執行 SSIS 專案、檢視執行狀態期間各元件所顯示的色彩等等事項。
我們延續前一期的實做步驟,請各位開啟先前存檔的專案[mySol2],開啟繼續編輯。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080310_SSIS Lab02:初探 SSIS 方案(3).7z
SSIS 上手 03:初探控制流程(1)
本文是發表於:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/04/07
使用版本:SQL Server 2005
本期延續先前的[SSIS Lab02:初探 SSIS 方案(下)],將繼續帶領各位上手認識:初探控制流程、設置優先順序條件約束、初探容器。
在實際在設計資料轉換封裝時,可能會需要利用到數個不同的工作,經過整合設計發揮所需要的功能,但是各個工作彼此之間在執行時,可能會有先後執行順序的需求,例如:A 工作執行成功後,或是執行失敗之後才能夠接下來執行 B 工作,關於這個部分,我們將利用[優先順序條件約束],設計各個工作所需的執行先後來解決此類問題。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080407_SSIS 上手 03:初探控制流程(1).7z
範例程式碼的檔案名稱:20080405_SSIS2005上手_M03.7z
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/04/07
使用版本:SQL Server 2005
本期延續先前的[SSIS Lab02:初探 SSIS 方案(下)],將繼續帶領各位上手認識:初探控制流程、設置優先順序條件約束、初探容器。
在實際在設計資料轉換封裝時,可能會需要利用到數個不同的工作,經過整合設計發揮所需要的功能,但是各個工作彼此之間在執行時,可能會有先後執行順序的需求,例如:A 工作執行成功後,或是執行失敗之後才能夠接下來執行 B 工作,關於這個部分,我們將利用[優先順序條件約束],設計各個工作所需的執行先後來解決此類問題。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080407_SSIS 上手 03:初探控制流程(1).7z
範例程式碼的檔案名稱:20080405_SSIS2005上手_M03.7z
SSIS Lab01 :初探 SSIS(2)
本文是發表於:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/02/18
使用版本:SQL Server 2005
本期我們將帶領各位使用 SQL Server Business Intelligence Development Studio(BIDS)來進行開發 SSIS 資料轉換的專案程式;在實作練習中,將先讓各位初探 SSIS 所提供的各項功能,先具備一個整體概
觀,暫不討論細部設計事項,筆者將會在後續的文章中,更進一步的討論各項功能的實作方式與注意事項。
本文將討論三項實作練習,分別是:建立 SSIS 方案、建立封裝、建置與執行專案。
其中在建立封裝練習中,將先快速使用各項主要功能,讓各位對於 SSIS 的功能有一個整體,所以各位在建立封裝練習中,初探數項SSIS 常用的功能。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080218_SSIS Lab01 :初探 SSIS(2).7z
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/02/18
使用版本:SQL Server 2005
本期我們將帶領各位使用 SQL Server Business Intelligence Development Studio(BIDS)來進行開發 SSIS 資料轉換的專案程式;在實作練習中,將先讓各位初探 SSIS 所提供的各項功能,先具備一個整體概
觀,暫不討論細部設計事項,筆者將會在後續的文章中,更進一步的討論各項功能的實作方式與注意事項。
本文將討論三項實作練習,分別是:建立 SSIS 方案、建立封裝、建置與執行專案。
其中在建立封裝練習中,將先快速使用各項主要功能,讓各位對於 SSIS 的功能有一個整體,所以各位在建立封裝練習中,初探數項SSIS 常用的功能。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080218_SSIS Lab01 :初探 SSIS(2).7z
SSIS Lab01 :初探 SSIS(1)
本文是發表於:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/02/04
使用版本:SQL Server 2005
SQL Server 2005 新提供的資料轉換平台:SQL Server Integration Services(SSIS),可用於建立高效能資料整合方案,包括:資料倉儲的擷取、轉換和載入 (ETL) 封裝。
SSIS 是用來取代 SQL Server 7.0 版本提供的Data Transformation Services (DTS)。
SSIS 提供豐富眾多的功能,本文計畫以實做練習的方式,按部就班,一步一步,帶領各位快速認識 SSIS,適時補充相關理論知識部分,並且建議各位可以搭配 SQL Server 線上說明一同閱讀,將可更清楚認識 SSIS 的功能與實做方式。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080204_SSIS Lab01 :初探 SSIS(1).7z
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/
日期:2008/02/04
使用版本:SQL Server 2005
SQL Server 2005 新提供的資料轉換平台:SQL Server Integration Services(SSIS),可用於建立高效能資料整合方案,包括:資料倉儲的擷取、轉換和載入 (ETL) 封裝。
SSIS 是用來取代 SQL Server 7.0 版本提供的Data Transformation Services (DTS)。
SSIS 提供豐富眾多的功能,本文計畫以實做練習的方式,按部就班,一步一步,帶領各位快速認識 SSIS,適時補充相關理論知識部分,並且建議各位可以搭配 SQL Server 線上說明一同閱讀,將可更清楚認識 SSIS 的功能與實做方式。
更多相關的技術文章,請參考:DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/

文章的檔案名稱:20080204_SSIS Lab01 :初探 SSIS(1).7z
訂閱:
文章 (Atom)









































