如何将查询从 phpMyAdmin SQL Dump 转换为 sql server 易读查询

Posted

技术标签:

【中文标题】如何将查询从 phpMyAdmin SQL Dump 转换为 sql server 易读查询【英文标题】:How to convert query from phpMyAdmin SQL Dump to an sql server legible query 【发布时间】:2011-03-16 12:33:05 【问题描述】:

我已经进行了一个小项目,该项目已经发展了一个当前的数据库。应用程序是用php编写的,数据库是mysql

我正在重写应用程序,但我仍然需要维护数据库的结构和数据。我收到了一个 sql 转储文件。当我尝试在 sql server management studio 中运行它时,我收到很多错误。我想知道有什么办法可以将 sql 脚本从创建的 phpMyAdmin 转储文件转换为 tsql?

有什么想法吗?

【问题讨论】:

【参考方案1】:

phpMyAdmin 是 MySQL 数据库的前端。转储数据库可以有多种格式,包括SQL脚本代码,但我猜你的问题是你用的是SQL Server,T-SQL和MySQL不一样。

编辑:我看到原始发帖人意识到了这一点(帖子上没有 MySQL 标签)。我的建议是以 CSV 格式重新转储数据库(例如)并通过批量插入导入,例如,对于单个表,

CREATE TABLE MySQLData [...]

BULK
INSERT MySQLData
FROM 'c:\mysqldata.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

如果数据库不是太大并且只有几个表,这应该可以正常工作。

顺便说一句,你确实有比让脚本运行更多的问题:数据类型的映射绝对不容易。

这是通过 DTS 导入/导出向导提供的 article about migration MySQL -> SQL Server,如果您的数据库很大(并且您仍然可以访问,即不仅有转储),这可能是一个好方法。

【讨论】:

【参考方案2】:

Tsql 和 Mysql 之间的语法相距一百万英里,你可以通过反复试验和一系列查找和替换来重写它。

更好的选择可能是安装 mysql 和 mysqlconnector,并使用 dubp 文件恢复数据库。

然后您可以在 SQL 服务器上创建一个链接服务器并执行如下一系列查询:

SELECT * 
INTO SQLTableName
FROM OPENQUERY
(LinkedServerName, 'SELECT * FROM  MySqlTableName') 

【讨论】:

有趣的想法,手动解决所有错误是不可能的。数据库太大【参考方案3】:

MySQL 的mysqldump 实用程序可以为其他系统生成一些兼容的转储。例如,使用--compatible=mssql。此选项不保证与其他服务器的兼容性,但可以防止大多数错误,让您手动更改的内容更少。

【讨论】:

以上是关于如何将查询从 phpMyAdmin SQL Dump 转换为 sql server 易读查询的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 sql 查询加载到 datagridview?

从 phpmyadmin(好)和 PHP 脚本(坏)执行 sql 查询的不同结果

SQL Server 2008 R2 - 将查询结果保存为 phpmyadmin 可读的 SQL 语句?

如何使用 phpMyAdmin 中的 SQL 查询设置具有许多特殊字符的列值?

如何从原始查询中获取 sql 结果

如何在没有此错误的情况下将此 SQL 转储导入 PhpMyAdmin?