我目前在MySQL中有一个数据库,我想在MS Access中导入该数据库。

是否可以在保持所有关系不变的情况下执行此操作(即,无需导出到.csv或使用ODBC)?

我是这个领域的菜鸟,因此对您的帮助非常感谢。

谢谢。

有帮助吗?

解决方案

您需要解决两个不同的问题:

  1. 使用与MySQL数据库结构匹配的结构创建一个空的MS Access数据库。

  2. 从MySQL提取数据并将其加载到MS Access中。

    这并不容易,因为不同的SQL数据库提供不同的结构特征,不同的数据类型等。您对MySQL的使用越复杂,在转换过程中就越有可能遇到一些麻烦(例如,Access根本不支持触发器)。相反,如果您将MySQL用作简单的数据存储,则转换可能会很容易。

    要获得与MySQL数据库具有相同结构的MS Access数据库,最好的选择是找到一个提供逆向工程并同时支持MySQL和MS Access的数据库定义/图表工具。使用它可以将MySQL数据库反向工程为数据库图,然后将基础数据库更改为MS Access并使用该工具生成数据库。

    查看 Dezign for Databases (无论如何,在纸上)提供您需要的功能做到这一点。

    要泵送数据,可以使用许多工具。这种操作通常称为ETL(提取,翻译,加载)。

其他提示

您是指SQL Server吗?一个不错的起点可能是检查SQL Server Integration Services(SSIS),该服务可用于像这样传输数据。

Google也会对您有所帮助,请查看第一个结果:

http://support.microsoft.com/kb/237980

顺便说一句,您在问题中说“ .sql”:。SQL文件是脚本文件,它可以执行以下操作:创建数据库,插入数据,删除表,删除数据或获得正确的权限,调用系统过程并重新启动计算机,格式化驱动器,发送电子邮件。。仅供参考,.SQL文件不是SQL Server使用的存储格式。

尽管您可以通过诸如SQLyog之类的代码将数据库的模式编写为脚本文件,但您会发现语法在数据库之间差异很大(在您的情况下是MySQL到Access),您不能直接应用这些脚本。

可以通过编辑脚本来创建转换脚本(可能会自动生成程序,具体取决于生成的脚本大小)。我认为使用ODBC复制表(和数据),然后从生成的脚本中手动提取并重新应用关系会更好。我希望这很耗时,而且也是一次性操作。

当两个系统是同一个数据库时,有一些工具可以进行比较和脚本生成(MySQL为TOAD,而Microsoft SQL为RedGate Compare),但是它们不能跨数据库工作(至少我不能做到)意识到)。

如果创建ODBC DSN,则可以使用TransferDatabase从MySQL数据库导入。您可以使用GET EXTERNAL DATA命令(或A2007 / A2010中的任何命令)手动进行操作,并查看其效果如何。并不能使所有数据类型都完全正确,但是您可以做一些按摩,使它更接近最有效的数据类型。

是否由于某些原因您不能直接链接到MySQL表并直接使用它们?也就是说,为什么您需要完全导入Access?

您可以尝试使用以下方法:转换MS Access与MySQL建立联系

工作正常并导出所有关系。

访问:运行查询。只需确保修改SQL代码即可,因为每个RDMS都有其自身的特征(尽管SQL是ANSI标准)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top