【问题标题】:Copying tables from Access DB to SQL Server将表从 Access DB 复制到 SQL Server
【发布时间】:2012-04-11 15:28:18
【问题描述】:

早上好。

我们需要将表从 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 中的所有表,但它们都填充了相同的信息。来自同一张表的信息(在变量中注明其名称的表)

谢谢,有什么建议吗?

【问题讨论】:

    标签: ms-access ssis


    【解决方案1】:

    通过阅读链接的解决方案,它看起来要么不正确,要么缺少一个步骤。现在,屏幕截图 #14 指定了“来自变量的 SQL 命令”和“SelectQuery”作为变量源;我看不到 SelectQuery 的更新位置。

    解决方案 1: 将 OLE DB Source 设置为“表名或视图名变量”,并将相关变量设置为 TableName(由 ForEach 容器每次迭代更新)

    解决方案 2: 将 SelectQuery 更改为表达式驱动的变量,即 "select * from " + @[User:TableName]

    【讨论】:

    • @Siva - 别担心,很高兴你把它修好了。
    【解决方案2】:

    您确实意识到该示例中的表格名称必须与 Excel 中的工作表名称相匹配,对吧?所以你可能必须在访问时做类似的事情。

    另外,发布更多信息。您的表变量上的值似乎没有被更新。告诉我们应该怎么做。

    【讨论】:

    • 是的,命名变量(我在本例中使用城市)存在于 Access 中。 (如果没有,它会因数据流中的错误而停止)。表的名称(保存在变量中)正在更新中。我通过查看 SQL 服务器中的所有新表来检查这一点。创建表意味着 TableName 的变量正在工作。问题在于填写这些表格的信息。这始终是相同的,它是包含在使用的第一个表中的数据(在 SelectQuery 变量中声明的那个)
    • 我会尝试更精确。我得到了存储在 Access DB 中的所有表名。为此,我使用了一些 C# 代码。我将它存储在一个名为 AccessTables 的对象变量中。对于每个表,该过程都会进入一个 For Each 循环。在里面,我需要在 SQL DB 中创建表的副本。复制所有内容、表名和内容。为此,我创建了一个包含语句“SELECT * FROM CITY”的变量(在链接中,名称 CITY 被 Country 替换)因此,在数据流的源中,我检查了“来自变量的 SQL 命令”跨度>
    • 第 2 部分.... 表已创建,名称都在那里。问题是内容。所有表都填充了第一个使用的表,即 SELECT 变量中使用的表。循环变量起作用,表被创建。但问题是,我相信,在数据流的源中,它总是复制同一个表(“select * from [Variable Table Name]”)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2012-09-04
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多