2

我意识到您可以使用 upsize 向导来正常转换它,但由于这是一个服务器端进程,我们每天都从第三方获取 mdb 文件,我必须能够在不接触的情况下摄取这些文件建筑学。

目前,我将着手手动编写(呃),我通过数据源读取访问数据库,并通过批量插入或实体框架将其打入 sql server。我真的希望有更好的方法来做到这一点。我愿意接受很多创造性的方法,因为有很多表格和大量数据。

4

1 回答 1

2

我想到了许多方法,它们确实都涉及自定义编程,但应该相对简单且易于实现。

  1. 从另一个 Access DB,以编程方式(即,使用 VBA)打开源 DB。在源数据库中创建与 SQL 后端的链接表。将数据从源数据库复制到链接表(使用insert dest select * from source)。
  2. 使用OPENDATASETOPENROWSOURCE与 SQL Server 直接连接到 Access DB 并复制数据。您可以再次使用insert dest select * from source来复制数据,或select * into dest from source从源数据创建新表。这涉及调整 sql server 上的一些系统设置,因为默认情况下它没有启用,但是一些谷歌搜索应该让你开始。
  3. 在 .NET 程序中,使用SqlBulkCopy(用于自动化的 .NET 类bcp)从 Access 数据库上传数据。只需直接使用 ADO.Net 处理数据,因为没有理由仅仅为了将数据从一个源迁移到另一个源而构建整个 EF 层。

我在各种项目中使用了上述所有三种方法的变体,但是对于移动大量表,我发现选项 #2 相对有效。如果您的表名每天都是动态的,它将涉及一些动态 SQL 代码,但如果它们是静态的,您应该只需要编写一次逻辑并使用一个参数来读取文件名。

于 2012-05-18T22:12:01.893 回答