2016-11-17 93 views
0

enter image description here我有一些.txt文件,我試圖導入到我的oledb目的地。 我想在以.csv格式提取數據之前應用一些更新。我試圖通過SSIS實現這一點。SSIS - 更新錯誤對於每個循環

我有以下流程:

1>Execute sql task to truncate my existing table
2>Data flow task to import my flat file to the oledb dest
3>Execute sql task to update my data as per my needs.
4>Data flow task to export the data in csv file.

關注這裏是: 我有很多這樣的文本文件,我想在我的包使用每個循環集裝箱, 我的文本文件有供應商明智的數據說,例如:tibco.txt,我想從一個位置導入此文件並將其解壓縮到目標文件夾中,但文件名與.csv擴展名相同。 我已經使用了一個變量,每次運行for循環時都會存儲該文件的名稱,並將其設置在表達式中:Connection String用於上述步驟2中使用的輸入平面文件。

我的包運行正常,直到第二步驟,但無法在步驟3.

錯誤更新數據: [執行SQL任務]錯誤:執行查詢「更新表名組vendor_inventory = R .. 。「失敗,並顯示以下錯誤:」無效的列名'HOSTNAME'。「。可能的失敗原因:查詢問題,「ResultSet」屬性設置不正確,參數設置不正確或連接未正確建立。

+0

「tablename」表中是否有一個「HOSTNAME」字段?我認爲更多細節可能會有所幫助,例如:文本文件是否全部導入到同一個表格或不同的表格中? – mendosi

+0

@mendosi是的,它有這個字段在裏面,文本文件一個一個地導入到同一個表中。 – Ruchi

回答

0

我假設你正在使用一個變量,你正在改變控制流的某個地方,並且沒有正確地反映到表達式中。

我總是用一個配置表,這樣對於每個循環使用的文件系統

表界定及

CREATE TABLE [dbo].[tbl_SSIS_InputMapping](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [Conn_Mgr] [varchar](50) NULL, 
    [MD_File] [varchar](500) NULL, 
    [Input_Path] [varchar](500) NULL, 
    [Output_Path] [varchar](500) NULL, 
    [Archieve_Path] [varchar](500) NULL, 
    [File_Format] [varchar](100) NULL, 
    [File_Type] [varchar](50) NULL, 
    [Package_Name] [varchar](100) NULL, 
    [Active] [char](1) NULL, 
    [AttachOutput] [char](1) NULL) 

我的文件夾結構看起來像這樣

MainFolder\MetaData 
MainFolder\Input 
MainFolder\Output 

我的配置表看起來像 this

MetaDataFile是包驗證所必需的。您可能在處理輸入文件後移動它。但下次啓動包時,它會查找文件(已被移動/刪除),並且會失敗。

這是一個非常通用的方法,可以根據您的需求量身定製