【问题标题】:SQL to MS Access exportSQL 到 MS Access 导出
【发布时间】:2009-03-16 05:12:43
【问题描述】:

我正在尝试将 DTS 访问导出程序包替换为我们可以从存储过程中调用的 exe(使用 xp_cmdshell)。

我们正处于 SQL 2000 和 SQL 2005 之间的过渡阶段,目前如果我们不能使用 DTS 或 SSIS,那将是最好的选择。

我相信我有以下选择:

  • 使用 SQL 数据读取器读取 SQL 记录,并使用 ADO.net 将读取的记录插入 Access。 我已经实现了这个,它太慢了。这不是一个选项
  • 在访问中设置链接表,然后获取访问以从 sql 中提取数据。 如果有人有这方面的经验,我将不胜感激一些代码示例或指出一些资源?

如果有任何其他选项可以将大量数据从 SQL 传输到 Access 数据库中,那就太棒了,但性能是一个大问题,因为我们可以处理每个表多达 100 万条记录。

【问题讨论】:

    标签: c# sql ms-access export


    【解决方案1】:

    你试过this吗?

    【讨论】:

    • 我有,问题是我们不能使 DTS 足够灵活以满足我们的目的。除非我可以即时生成 DTS 包然后执行它,否则我需要另一种方式。
    • 因此,原则上,您可以通过 GUI 执行的任何操作都可以在程序控制下完成(GUI 毕竟是一个程序)。但魔鬼在细节中,而你没有提供足够的细节。我建议编辑问题以提供更多细节,
    【解决方案2】:

    为什么不在 Access 中创建链接表,从 Sql Server 拉取数据,而不是从 Sql 推送到 Access?

    【讨论】:

      【解决方案3】:

      我已经完成了很多案例,我从 Access 数据库开始,连接到 SQL Server,创建创建表或插入 Querydef,并编写一些代码来执行 querydef,可能带有参数。但是对于您的问题以及您对 Access 的熟悉程度,我需要做出很多假设才能更详细地介绍。你能从这个描述中走多远?

      【讨论】:

      • 我从来没有真正处理过通过 c# 的访问。我非常熟悉.net 和 SQL。访问是弱点。有任何好的参考资料,我可以很快找到它,只需要寻找正确的方向!
      • 我建议您获取 Access 的副本并探索两个选项。最简单的是“导入”,如果可以的话,我们可以从那里开始工作。另一种是附加表格,这可以让您获得更多可能不需要的灵活性。在您有机会这样做之后,我们可以确定要自动化哪个。
      【解决方案4】:

      我最终使用了 Access 互操作,感谢 le dorfier 为我指明了导入函数的方向,这似乎是最简单的方法..

      我现在有一些类似的东西:

      Access.ApplicationClass app = new Access.ApplicationClass();
      Access.DoCmd doCmd = null;
      
      app.NewCurrentDatabase(_args.Single("o"));
      doCmd = app.DoCmd;
      
      //Create a view on the server temporarily with the query I want to export
      
      doCmd.TransferDatabase(Access.AcDataTransferType.acImport,
          "ODBC Database",
           string.Format("ODBC;DRIVER=SQL Server;Trusted_Connection=Yes;SERVER={0};Database={1}", _args.Single("s"), _args.Single("d")),
           Microsoft.Office.Interop.Access.AcObjectType.acTable,
           viewName,
           exportDetails[0], false, false);
      //Drop view on server
      
      //Releasing com objects and exiting properly.
      

      【讨论】:

        【解决方案5】:

        你看过bcp吗?它是一个命令行实用程序,可以很好地导入和导出大量数据。我从未尝试过让它与 Access 搭配得很好,但它是 DTS 和/或 SSIS 的绝佳轻量级替代品。

        就像其他人所说的,我知道将数据导入 Access mdb 的最简单方法是在 Access 中进行设置。粗略地说:

        1. 为要导出的 SQL 数据创建链接表。 (在访问:文件 --> 获取外部数据 --> 链接表)这只是给你一个到 sql server 的连接。
        2. 创建一个本地表,代表您要导出的数据的架构。 (在表格标签上,点击“新建”按钮并跟随您的步伐)。
        3. 创建一个更新查询,从链接表 (SQL Server) 中选择数据并将行追加到本地表(访问 mdb)。
        4. 在宏选项卡上,创建一个新宏来执行您刚刚在上面创建的查询(我不记得要使用的确切“操作”,但它类似于 OpenQuery 或 RunQuery);将宏命名为“autoexec”,这将使其在打开 mdb 时自动运行。
        5. 在适当的时候使用脚本(或其他)复制并打开 mdb; autoexec 宏将启动,查询会将数据从 SQL 服务器复制到 mdb。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-12
          • 2017-08-28
          相关资源
          最近更新 更多