通过 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 时语法不正确的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库