SQL到MS Access导出

时间:2009-03-16 05:12:44

标签: c# sql ms-access export

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

我们正处于SQL 2000和SQL 2005之间的转换过程中,目前如果我们不能使用DTS或SSIS这将是最好的选择。

我相信我有以下选择:

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

如果有任何其他选项可以将大量数据从SQL传输到一个非常棒的Access数据库,但性能是个大问题,因为我们可以处理每个表最多1mil的记录。

5 个答案:

答案 0 :(得分:1)

您是否尝试过this

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我已经做了很多案例,我从Access数据库开始,附加到SQL Server,创建Create Table或Insert Querydef,并编写一些代码来执行querydef,可能带参数。但是我需要对你的问题做出很多假设,并且熟悉Access以了解更多细节。你能用这种描述得到多远?

答案 3 :(得分:1)

我最终使用了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.

答案 4 :(得分:0)

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

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

  1. 为要导出的SQL数据创建链接表。 (在Access:File - > get ecternal data - > link tables)这只是为你提供了与sql server的连接。
  2. 创建一个表示要导出的数据的架构的本地表。 (在表格标签上,点击“新建”按钮并按照你的意思)。
  3. 创建一个更新查询,从链接表(SQL Server)中选择数据,并将行附加到本地表(访问mdb)。
  4. 在宏选项卡上,创建一个执行上面创建的查询的新宏(我不记得要使用的确切“动作”,但它类似于OpenQuery或RunQuery);将宏命名为“autoexec”,这将导致它在打开mdb时自动运行。
  5. 使用脚本(或其他)在适当的时候复制并打开mdb; autoexec宏将启动,查询将数据从SQL服务器复制到mdb。