我目前在MySQL中有一个数据库,我想在MS Access中导入。
是否可以在保持所有关系完整(即不导出到.csv或使用ODBC)的情况下执行此操作?
我是这个领域的菜鸟,所以非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
你的意思是SQL Server?一个很好的起点可能是检查SQL Server Integration Services(SSIS),它可以用来传输这样的数据。
Google也会提供帮助,请查看第一个结果:
http://support.microsoft.com/kb/237980
顺便说一下,你在问题中说“.sql”:.SQL文件是一个脚本文件,它可以做任何事情,从创建数据库,插入数据,删除表,删除数据或给予正确的权限,调用系统程序并重启机器,格式化驱动器,发送电子邮件..仅供参考,.SQL文件不是SQL Server使用的存储格式。
答案 1 :(得分:1)
您需要解决两个不同的问题:
创建一个空的MS Access数据库,其结构与MySQL数据库结构相匹配。
从MySQL提取数据并将其加载到MS Access中。
这并不容易,因为不同的SQL数据库提供不同的结构特征,不同的数据类型等等。你使用MySQL越复杂,你就越有可能在转换过程中遇到一些show-stopper(例如,Access根本不支持触发器)。相反,如果您使用MySQL作为简单的数据存储,您可能会发现转换相当容易。
要获得与MySQL数据库结构相同的MS Access数据库,最好的办法是找到一个提供逆向工程并支持MySQL和MS Access的数据库定义/图表工具。使用它将MySQL数据库反向工程为数据库图表,然后将底层数据库更改为MS Access并使用该工具生成数据库。
查看Dezign For Databases(无论如何,在纸面上)提供了执行此操作所需的功能。
要抽取数据,可以使用任意数量的工具。这种操作通常称为ETL(提取,翻译,加载)。
答案 2 :(得分:0)
虽然您可以通过SQLyog之类的脚本将数据库的模式编写脚本文件,但您会发现从数据库到数据库(在您的情况下为MySQL)的语法变化不大,您无法直接应用脚本。
通过编辑脚本可以创建转换脚本(可能通过程序自动执行,具体取决于生成的脚本大小)。我认为使用ODBC复制表(和数据)然后手动提取和重新应用生成的脚本中的关系会更好。耗时,但也希望一次性操作。
当两个系统都是同一个数据库时,有一些工具可以进行比较和脚本生成(用于MySQL的TOAD和用于Microsoft SQL的RedGate Compare),但它们不进行跨数据库工作(至少不是我的工作)我知道)。
答案 3 :(得分:0)
如果创建ODBC DSN,则可以使用TransferDatabase从MySQL数据库导入。您可以使用GET EXTERNAL DATA命令(或A2007 / A2010中的任何内容)手动执行此操作并查看其工作情况。它不会使所有数据类型完全正确,但您可以进行一些按摩,并可能使其更接近最佳效果。
是否有某些原因你不能直接链接到MySQL表并直接使用它们?也就是说,为什么你需要导入Access呢?
答案 4 :(得分:0)
您可以尝试使用此功能:Converting MS Access to MySQL with relationships
正常工作并导出所有关系。
答案 5 :(得分:-2)
访问:运行查询。只需确保调整SQL代码,因为每个RDMS都有自己的sintaxis(尽管SQL是ANSI标准)。