2012-04-11 148 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