使用 PhpMyAdmin 导入 MSSQL.sql 时出现问题

Posted

技术标签:

【中文标题】使用 PhpMyAdmin 导入 MSSQL.sql 时出现问题【英文标题】:Issue importing MSSQL.sql using PhpMyAdmin 【发布时间】:2012-12-24 23:05:26 【问题描述】:

一直在研究将 MSSQL 转换为 mysql。对我来说最好的选择是使用 MSSQL.sql 并使用 phpMyAdmin 导入它。

以下帖子和链接很有帮助:

How to export SQL Server database to MySQL?

How to convert SQL Server database to MySQL database

http://forums.eukhost.com/f15/how-create-sql-file-mssql-database-created-sql-server-express-12514/#.UO68SHOLJ8s

但是当我尝试这样做时,它似乎失败并出现以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法

这发生在 .sql 文件的某些位置,例如:

使用[充电]

/****** 对象:表 [dbo].[CountryNm] 脚本日期:01/10/2013 13:28:42 ******/

这似乎是 MSSQL.sql 文件的基本部分。我尝试从文件中删除 USE 和 GO,但随后在 cmets 处停止。我还没有删除这些,因为我认为我正在做的事情可能从根本上是错误的?

我已将 PhpMyAdmin 设置为格式:SQL,格式特定选项:MSSQL 并且不要将 AUTO_INCREMENT 用于零值:选中。

在此先感谢

编辑:MSSQL Server Management Studio 脚本向导选项:

ANSI 填充:真

附加到文件:错误

在错误:错误时继续编写脚本

将 UDDT 转换为基本类型:False

为依赖对象生成脚本:False

包括描述性标题:真

如果不存在则包括:错误

包括系统约束名称:False

架构质量对象名称:真

脚本绑定:错误

脚本排序:真

脚本默认值:True

脚本丢弃:错误

脚本扩展属性:True

服务器版本脚本:SQL Server 2008

脚本登录:错误

脚本对象级权限:False

脚本使用数据库:错误

脚本更改跟踪:错误

脚本检查约束:真

脚本日期:真

脚本数据压缩选项:False

脚本外键:True

脚本全文索引:错误

脚本索引:错误

脚本主键:True

【问题讨论】:

【参考方案1】:

没有GO 关键字,它是一个脚本拆分器,仅适用于 SSMS/OSQL 和一些其他 MS 产品(可通过选项自定义)。

在 MYSQL 中更改数据库的 USE 语句应该没问题 - 请参阅 here 以获取参考。尝试将GO 换成分号来结束语句。

根据docs,这种类型的注释也适用于Mysql。

考虑到这两个因素,试试这个说法:

USE [Charging];

/* Object: Table [dbo].[CountryNm] Script Date: 01/10/2013 13:28:42 */

【讨论】:

感谢发帖。我已经删除了所有的 GO 关键字,并且使用分号的 USE 会产生一个关于可能发现错误的可怕错误?为了更好地衡量,我将所有 cmets /**** 和 ****/ 更改为 /* 和 */。我仍然收到此错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“/”附近使用正确的语法。“/”应该是正确的。 @mflammia 这个脚本是一次性的吗?如果它只是在单个数据库中编写脚本,那么无论如何您都可以删除所有 USE 语句和 cmets。最好消除无意义的,让你更有可能发现问题,是吗? 是的。使用 MSSQL 脚本向导的所有设置对我上面的原始问题进行了编辑。我只是用“包括描述性标题:错误”重新运行它以摆脱 cmets。现在,当我导入时,它会运行,但完成后窗口会完全空白。你还有左边的 PhpMyAdmin 窗口,新的表还没有出现?这次没有线索。也许我在 MSSQL 脚本向导中的一些选项可以调整,但我不确定哪些选项?谢谢 @mflammia 我害怕有一段时间没有使用 PHPMyAdmin,但我确实做了一个快速的谷歌搜索,并想出了this link - 这可能是你正在经历的吗? 设法以不同的方式解决它,但无论如何感谢您的帮助 Bridge。【参考方案2】:

嗯,这是一个特别痛苦的练习,但我已经设法让 MSSQL 数据库迁移到 MSSQL,这是最终目标。但不要走乍一看似乎最简单的使用 PhpMyAdmin 的路线。

MSSQL 服务器是隔离的,所以我必须备份数据库(.BAK 文件)并在我的本地计算机上安装 MSSQL 服务器 2008 express。在我的 Windows 7 专业 PC 上单独安装 Microsoft SQL Management Studio Express 时遇到了很多麻烦,但通过安装 MSSQL server 2008 高级服务解决了这个问题。然后我将备份恢复到那个。 不确定这是否需要,但我还安装了 MYSQL ODBC 驱动程序。

然后我安装了 SQL Data Examiner 2012。这让我可以同时连接到本地 MSSQL 实例和远程 MYSQL 数据库。然后我可以将表添加到 MYSQL DB 并运行同步。 幸运的是,这样做似乎突出了为什么我可能在使用 PhpMyAdmin 导入时遇到问题,其中大多数似乎是 MYSQL 不喜欢的超过 16 列的表!

嗯,从某种意义上说,它仍然是成功的,我能够在我导出的几个表中删除很多列 - 希望对处于相同情况的其他人有用。

【讨论】:

以上是关于使用 PhpMyAdmin 导入 MSSQL.sql 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

从 phpMyAdmin 导出的数据库导入 phpMyAdmin 时出错

使用 phpMyAdmin 导入大型 csv 文件

使用 excel 日期导入 phpmyadmin sql

使用 mamp、phpMyAdmin 导入 mysql 数据库

如何将 CSV 导入 phpMyAdmin?

使用 phpMyAdmin 导入 SQL 文件时出错