将 MS-Access 数据库转换为 SQL 脚本的工具

Posted

技术标签:

【中文标题】将 MS-Access 数据库转换为 SQL 脚本的工具【英文标题】:Tool to convert MS-Access Database to SQL script 【发布时间】:2010-09-27 08:12:49 【问题描述】:

我们的软件包使用的是MS-Access数据库,这个数据库已经修改了很多次,所以,光看文件有点复杂(表之间的关系是小地狱),反正

有没有办法或程序将此 mdb 文件转换为 SQL 脚本(目前任何类型的 SQL 脚本都可以)。

谢谢,

【问题讨论】:

【参考方案1】:

你看过SQL Server Migration for Microsoft Access吗?

如果您将副本转换为 SQL Server,您可能会更好地了解数据库。

【讨论】:

只要确保您仔细检查了索引、约束、默认值等。我看到 SQL Server 迁移工具有一些奇怪的行为。它非常适合移动数据,而对于其他元信息则不太适用。【参考方案2】:

SubSonic 具有将数据库设计及其数据转储到 SQL 中的选项。过去我发现它非常方便将我的测试数据库备份到源代码控制。

下载并安装 SubSonic 2.1 版。

您可以完全从命令行运行生成脚本,但我个人发现使用 App.Config 文件更容易,以便能够更轻松地处理配置选项。设置一个 .Net 项目,并将 App.Config 文件设置为适当的设置。 App.Config 的文档可以在这里找到:http://subsonicproject.com/configuration/config-options/

这是我的一个旧项目的示例:


<?xml version="1.0" encoding="utf-8" \>
<configuration>
    <configSections>
        <section name="SubSonicService" 
            type="SubSonic.SubSonicSection, SubSonic" 
            requirePermission="false"/>
    </configSections>

    <connectionStrings>
        <clear />
        <add name="subTest" 
            connectionString="Data Source=MYCOMP\MICROSOFTSMLBIZ\,56183;Database=someDB;User ID=someId;Password=somePasswrd!"
            providerName="System.Data.SqlClient" />
    </connectionStrings>

    <SubSonicService defaultProvider="subTest">
        <providers>
            <clear/>
            <add name="subTest" 
                type="SubSonic.sqlDataProvider, SubSonic" 
                connectionStringName="subTest"
                generatedNamespace="TerraCognita.Project.Services.DAL"
                includeTableList="^Bug$, ^Person$, ^Groups$, ^Project$, ^TimeInterval$"/>
        </providers>
    </SubSonicService>
</configuration>

使用适合您的数据库的连接字符串,以及(我相信)适合 Access 数据库的提供程序。 (您也可以在命令行中指定大多数参数,但我个人觉得使用配置文件更直接。)

打开命令提示符,当前文件夹应该是有 App.Config 的文件夹。以下是您需要的命令:

[安装文件夹]\SubCommander\sonic.exe [命令] /out [输出文件名]

其中 [Command] 可以是脚本模式或脚本数据。 (还有其他命令,但这是您感兴趣的两个命令。帮助也是一个选项。

【讨论】:

【参考方案3】:

你可以看看Database Comparer

【讨论】:

以上是关于将 MS-Access 数据库转换为 SQL 脚本的工具的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 查询转换为访问查询 - SELECT 中的 SELECT

MS-Access SQL 将同一表中的值从“Value”更新为“*Value”

如何将Excel数据转换为SQL脚本

如何将Excel数据转换为SQL脚本

加入sql还是ms-access?

将 SQL 插入脚本转换为 CSV 格式