如何将查询从 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 语句?