将 Mdb 转换为 Sql Server

Posted

技术标签:

【中文标题】将 Mdb 转换为 Sql Server【英文标题】:Convert Mdb to Sql Server 【发布时间】:2011-02-21 10:49:22 【问题描述】:

如何使用 c# 或其他语言将 mdb 访问文件转换为 sql server? 我在 msdn 中找到了 article。但是,我无法理解。

谢谢。

【问题讨论】:

这样做你想解决什么问题? 【参考方案1】:

创建您的 SQL Server 数据库,然后使用集成服务转换数据。在这样做之前彻底审查数据库设计是有意义的。为 Jet 设计的设计不一定是最适合 SQL Server 的设计。

编辑:我没有提到另一个显着差异。 Jet/ACE 在插入空值时强制执行可为空的外键,而 SQL Server 遵循 SQL 标准,该标准要求在外键约束中忽略空值(不违反约束)。如果您有可为空的外键,那么我强烈建议您重新设计,以便在 SQL Server 中使它们不可为空(例如,通过将列移动到新表)。

【讨论】:

@dportas:你把这个答案发了两次?我假设您实际上并非有意这样做? 请详细解释在 Jet 中创建的设计为何不适合 SQL Server。 为了强化 Tony 的问题,除了数据类型之外,我看不出 Jet/ACE 架构在 SQL Server 中不能正常工作。当然,SQL Server 有触发器,只有 A2010 有,但我认为触发器不一定是好事(取决于它们的用途)。我看不出如果在 Jet/ACE 中实现更简单的架构,即使它不能使用 SQL Server 可能提供的一些更高级的功能,它也会有什么问题。 我“侮辱”了如何访问?你太荒谬了。我提到了 Jet 和 SQL Server 之间的这些差异,因为我多次回答了希望将这些功能从 Jet/Access 迁移到 SQL Server 的用户的问题。进行迁移的人不一定是创建 MDB 的人。我想你知道,有很多 Access 用户没有太多的数据库设计知识或经验。显然,您有自己的议程,这与 Access 社区的真正需求无关。 我想我已经用几个例子回答了托尼的问题。如果您依赖我提到的功能,那么您可能需要修改数据库设计、添加/更改键或进行其他更改。没有人在谈论任何事情中的“缺乏”。我只是说它们是不同的产品,您不一定期望每种产品都有完全相同的行为(您现在显然同意这一点)。因此,谨慎的做法是彻底审查设计,看看它在迁移后是否仍能满足您的要求。关于将数据库从 SQL Server 迁移到 Oracle,我也会这么说。【参考方案2】:

这根本不是你可以用 C# 做的事情(除非你真的想读取访问表的架构并使用 ADO.NET 命令在 SQL Server 中创建类似的架构)。

如果您的操作只需执行一次,打开 SQL Management Studio,创建一个空数据库,然后右键单击它,任务和“导入数据”,然后从向导中选择 Import from MS Access 和 SQL Server 将导入结构和数据。

如果您真的想用 C# 编写大量代码来“模仿”上述向导的功能并拥有一个通用工具可用于不同的数据库,则此答案无效...

【讨论】:

我知道已经很晚了。我解决它。事实上,我有一个 iphone 应用程序。我的想法是,首先将 mdb 文件转换为 sqlserver。然后,同样转换为mysql,然后是sqlite文件。这是如此漫长而愚蠢的方式,我知道。但是,我使用 google mdb 来 sqlite 代码。大满贯。谢谢大家。

以上是关于将 Mdb 转换为 Sql Server的主要内容,如果未能解决你的问题,请参考以下文章

如何从 c# 将 SQL Server 数据库转换/导出到 MSAccess

将悖论转换为 MDB

将 MDB 转换为 MySQL 的最佳方法 [关闭]

将 MDB 转换为 CSV [关闭]

我可以使用 .NET 将 ACCDB 文件转换为 MDB

使用 PowerShell 将多个 .accdb 文件转换为 .mdb?