2012-04-11 146 views
1

早上好。將表從Access DB複製到SQL Server

我們需要將表從Access複製到SQL。事情來源中的表名每天都有變化。 我已經按照在溶液中顯示出這個帖子How do I programmatically get the list of MS Access tables within an SSIS package?

問題的步驟是這樣的:

我改變的變量名,這一切,因爲在該職位規定的問題是相當類似地雷。 我按照步驟操作並將Country更改爲Access DB的表名稱,可以說CITY。問題是當進程在Access中循環表時,複製到SQL中的表的數據總是相同的。存儲在CITY中的數據看起來並不改變表格,它總是使用提供給OLE DB源的表格(如截圖14#所示)(表格名稱在變量'SelectQuery'中提供)

所以我SQL中創建了所有的表,但它們都填充了相同的信息。信息來自同一張表(變量中聲明的名稱)

謝謝,有什麼建議嗎?

回答

1

從閱讀鏈接的解決方案看,它看起來不正確或缺少一個步驟。現在,截屏#14指定了'變量中的SQL命令'和'SelectQuery'作爲變量源;我看不到SelectQuery被更新的位置。

解決方案1: 設置OLE DB源「表名稱或視圖名稱變量」,並設置在問題表名的變量(其由給ForEach容器更新每次迭代)

解2:將SelectQuery更改爲表達式驅動的變量,即"select * from " + @[User:TableName]

+0

這就是Geoff,非常感謝! – 2012-04-12 11:32:00

+0

@Siva - 不用擔心,很高興你把它修好了。 – Geoff 2012-04-13 19:16:45

0

你確實意識到該示例中的表名必須與Excel中的表名匹配,對不對?所以你可能必須在訪問時做類似的事情。

此外,發佈更多信息。看來你的表變量的值沒有被更新。告訴我們應該如何。

+0

是的,Access中存在指定變量(本例中使用City的Im)。 (如果它沒有停止在數據流中發生錯誤)。表格的名稱(保存在變量中)正在更新。我通過觀察SQL服務器中的所有新表來檢查這一點。這些表格的創建意味着TableName的變量正在工作。問題是填充這些表格的信息。這總是相同的,它是包含在第一個表中的數據(在SelectQuery變量中陳述的) – 2012-04-11 15:45:25

+0

我試着更加精確。 我得到存儲在Access數據庫中的所有表名。爲此,我使用了一些C#代碼。我將它存儲在名爲AccessTables的Object變量中。 對於每個表,該過程都會輸入For Each Loop。 在那裏我需要在SQL DB中創建表的副本。 複製所有內容,表名和內容。 爲此,我創建了一個包含句子'SELECT * FROM CITY'的變量(在鏈接中,名稱CITY由國家替換) 因此,在數據流源中,我檢查了'變量中的SQL命令' – 2012-04-11 15:59:13

+0

第2部分......表格被創建,名稱都在那裏。問題是內容。所有表都填充了第一個使用的表,這是SELECT變量中使用的表。 循環變量起作用,表被創建。但問題是,我相信在數據流的源代碼中,它始終複製同一個表(「select * from [Variable Table Name]」) – 2012-04-11 15:59:41