我意识到您可以使用 access 中的升迁向导来正常转换它,但由于这是一个服务器端进程,我们每天从第三方获取 mdb 文件,我必须能够使用非接触式架构。
目前,我准备开始手动编写所有内容(呃),我通过数据源读取 Access 数据库,并通过批量插入或 Entity Framework 将其打入 SQL Server。我真的希望有更好的方法来做到这一点。我愿意接受很多创造性的方法,因为有很多表格和大量数据。
最佳答案
我想到了许多方法,它们确实都涉及自定义编程,但应该相对简单且易于实现。
- 从另一个 Access DB,以编程方式(即使用 VBA)打开源数据库。在源数据库中创建到 SQL 后端的链接表。将数据从源数据库复制到链接表(使用
insert dest select * from source
)。 - 将
OPENDATASET
或OPENROWSOURCE
与 SQL Server 结合使用,直接连接到 Access DB 并复制数据。您可以再次使用insert dest select * from source
复制数据,或select * into dest from source
从源数据创建新表。这涉及到调整 SQL Server 上的一些系统设置,因为它默认情况下未启用,但一些 Google 搜索应该可以帮助您入门。 - 在 .NET 程序中,使用
SqlBulkCopy
(这是用于自动化bcp
的 .NET 类)从 Access 数据库上传数据。只需直接使用 ADO.Net 处理数据,因为没有理由仅仅为了将数据从一个源迁移到另一个源而构建整个 EF 层。
我在各种项目中使用了上述所有三种方法的变体,但对于移动大量表,我发现选项#2 相对有效。如果您的表名每天都是动态的,那么它将涉及一些动态 SQL 代码,但如果它们是静态的,您只需编写一次逻辑并使用要读取的文件名参数。
关于c# - 自动化 mdb 到 sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660249/