通过 SQLCMD 将 sql 文件从 MySQL 导入 MS SQL 时语法不正确

Posted

技术标签:

【中文标题】通过 SQLCMD 将 sql 文件从 MySQL 导入 MS SQL 时语法不正确【英文标题】:Incorrect syntax when import sql file from MySQL to MS SQL via SQLCMD 【发布时间】:2017-09-02 13:35:09 【问题描述】:

我有从 mysql 导出的大型 .sql 文件,并尝试通过

将它们导入 MS SQL(localDB)

SQLCMD。但是当我在命令提示符中输入以下内容时:

sqlcmd.exe -S (localdb)\MSSQLLocaldb -i C:\Users\Administrator\Desktop\1\SQLQuery4.sql

我收到以下错误消息:

“tblo”附近的语法不正确

我检查了我的 .sql 文件,似乎 SQLCMD 无法理解双引号

例如

插入“tblo”值(2,'DTT','10000286','Dp','y',2,38,'2010-02-22 11:03:51','2010-02-22 11:03:51');

不过,SSMS

没问题

有解决这个问题的办法吗?

【问题讨论】:

不能将mysqldump直接导入mssql 不完全是。如果我在 SSMS 中执行这些 .sql 文件,我可以成功导入。我发现如果我删除这些中的双引号,我也可以通过 SQLCMD 导入。但是太不方便了。所以我想知道是否有可能让我的 SQLCMD 理解双引号。 【参考方案1】:

我自己找到了解决方案: 当我从 MySQL 转储数据时,我可以添加 --skip-quote-names 标志

例如

mysqldump.exe -hlocalhost -uUserName -pPassword --compatible=mssql --no-create-info --skip-quote-names --skip-add-locks DataBase tblo > D: \Test\dump.sql

dump.sql 中的结果如下:

插入 tblo 值 (2,'DTT','10000286','Dp','y',2,38,'2010-02-22 11:03:51','2010-02-22 11 :03:51');

所以我可以使用这个 .sql 通过 SQLCMD 直接将数据导入 MS SQL 服务器

sqlcmd -S (localdb)\MSSQLLocaldb -i D:\Test\dump.sql

【讨论】:

以上是关于通过 SQLCMD 将 sql 文件从 MySQL 导入 MS SQL 时语法不正确的主要内容,如果未能解决你的问题,请参考以下文章

从WiX使用SQLCMD执行二进制SQL文件

cmd 执行sql脚本,该怎么处理

如何使用sqlcmd在批处理脚本中执行SQL?

无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库

同一 .bat 文件中的 SQL 安装和 sqlcmd 问题

sqlcmd无法连接数据库