将MySQL数据库导入MS SQL Server
我有一个MySQL转储中的.sql文件,其中包含要插入到这些表中的表、定义和数据。如何将转储文件中表示的此数据库转换为MS SQL Server数据库?如果使用进行导出,可以将SQL兼容模式切换为“MSSQL”。这样,您只需针对MS SQL数据库运行导出的脚本,就完成了 如果您不能或不想使用PhpMyAdmin,中还有一个兼容性选项,但就个人而言,我宁愿让PhpMyAdmin为我这样做。我建议您这样使用:将MySQL数据库导入MS SQL Server,mysql,sql-server,mysqldump,Mysql,Sql Server,Mysqldump,我有一个MySQL转储中的.sql文件,其中包含要插入到这些表中的表、定义和数据。如何将转储文件中表示的此数据库转换为MS SQL Server数据库?如果使用进行导出,可以将SQL兼容模式切换为“MSSQL”。这样,您只需针对MS SQL数据库运行导出的脚本,就完成了 如果您不能或不想使用PhpMyAdmin,中还有一个兼容性选项,但就个人而言,我宁愿让PhpMyAdmin为我这样做。我建议您这样使用: mysqldump--compatible=mssql 仍然是一个web应用程序,可能对大
mysqldump--compatible=mssql
仍然是一个web应用程序,可能对大型数据库有一些限制(脚本执行时间、可分配内存等)。我在网上找到了一种方法 它需要一点工作,因为它必须一桌一桌地完成。但无论如何,我可以将表、数据和约束复制到MS SQL数据库中 这里是链接 使用 除了MySQL之外,它还支持Oracle、Sybase和MS Access 它看起来相当聪明,甚至能够处理非平凡的传输。它还获得了一些命令行界面(除了GUI),因此理论上它可以集成到一些批处理加载过程中 这是MySQL版本的当前下载链接 当前(2016年6月)稳定版本6.0.1在传输数据时与当前(5.3.6)MySQL ODBC驱动程序崩溃。所有内容都是64位的。
带有5.1.13 ODBC驱动程序的5.3版本运行良好。以下是我将.sql文件导入MS sql的方法:
--compatible=mssql
和--extended insert=FALSE
选项从MySQL导出表:
mysqldump-u[username]-p--compatible=mssql--extended insert=FALSE db\u name table\u name>table\u backup.sql
$i=0;Get Content exported.sql-ReadCount 300000 |%{$i++$| Out File Out_$i.sql}
。通过使用此选项,您可以在
where
sql子句支持的任何条件下拆分表。您还可以使用“ODBC”+“sql Server导入和导出向导”。
下面的链接描述了它:
我今天遇到了一个非常类似的问题——我需要将一个大表(500万行)从MySql复制到MS SQL中 以下是我(在Ubuntu Linux下)完成的步骤:
$AZURE\u SERVER
,$TABLE
,e.t.c
希望对您有所帮助。运行:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
是否要查看进程栏
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
对我来说,最好使用以下命令导出所有数据:
mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql
--需要extended insert=FALSE以避免mssql 1000行导入限制
我使用迁移工具创建了表,因此我不确定从backup.sql文件创建表是否有效
在MSSQL的SSMS中,我必须使用IDENTITY_INSERT按表导入数据,以写入ID字段:
SET IDENTITY_INSERT dbo.app_warehouse ON;
GO
INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,'');
SET IDENTITY_INSERT dbo.app_warehouse OFF;
GO
如果您有关系,则必须首先导入子项,然后再导入带有外键的表。您可以使用sqlie应用程序将mysql转换为sqlserver 你可以看这个视频
您也可以访问原始数据库吗?或者导出文件基本上就是你所有的吗?我也访问了原始数据库。我只是觉得使用转储可能更容易。唉,这给我带来了各种兼容性问题。脚本将在列名周围包含反勾号,MSSQL中不存在的数据类型,将违反max-1000-inserts约束,自动增量关键字等。这个答案是一个合乎逻辑的建议,但我担心它不会工作得太好(至少:我没有)。mysqldump--compatible=ansi“生成与其他数据库系统或较旧的MySQL服务器更兼容的输出。此选项唯一允许的值是ansi,其含义与设置服务器SQL模式的相应选项相同。“-这与您认为的不一样。只有当您可以将ODBC连接器从PC安装到MySQL数据库时,此工具才能工作。如果你只有一个.sql转储文件,你就不能使用SSMA.MySQL引擎是免费软件,也有一个windows版本。安装它并加载转储是一项琐碎的工作。如果您希望找到一个工具(即使是商业工具,更不用说免费工具),可以可靠地将任意MySQL脚本转换为其SQL Server等效脚本,那么,祝您好运。这一点很好。这就是我昨天所做的。除了编写自己的自定义转换实用程序之外,安装MySQL似乎是最好的选择。SSMA使用起来很麻烦,但我最终还是成功了。SSMA是一个很好的选择,这应该是公认的答案。我觉得它一点也不难使用。它需要SQL Server Express中没有的SQL Server代理。也就是说,当Mysql和SQL都在一台机器上或通过网络连接时。如果存在两台不同的机器,并且您有一个来自mysql的转储文件,那么这就没有用了。对吗?这个答案对我很有用,对生成的脚本只做了最小的修改。将其引入SQL Server 2012。以前没有看到兼容模式。我们如何才能导出整个数据库而不是按表导出?请尝试以下回答中解释的“数据库[db_name]关键字:欢迎使用Stackoverflow@gorgino!”!如果你发布了一个链接,请同时发布一个简短的内容摘要,以防将来链接会被关闭。链接应该主要用于扩展你的答案,而不是成为你的答案。
mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql
SET IDENTITY_INSERT dbo.app_warehouse ON;
GO
INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,'');
SET IDENTITY_INSERT dbo.app_warehouse OFF;
GO