SQL Server到Mysql的迁移(使用Mysql Workbench)。如何在Workbench向导的步骤中使用手动转义的撇号添加数据?

时间:2016-10-24 17:20:08

标签: mysql sql-server mysql-workbench data-migration

我知道如何逃避撇号。问题是不同的。如何在Workbench向导的步骤中使用手动转义的撇号添加数据?

我有同样的问题 SQL Server to Mysql migration (using Mysql Workbench) data transfer error

如何手动将转义添加到撇号('),然后在DATA MIGRATION的工作台向导中运行最后一步?

我的错误不同: 语句执行失败:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册 使用附近的Homestead',' Regina Murphy'销售代表' 707牛津路',' ;安娜堡''在第1行:

INSERT INTO `Northwind`.`Suppliers` (`SupplierID`, `CompanyName`, `ContactName`, `ContactTitle`, `Address`, `City`, `Region`, `PostalCode`, `Country`, `Phone`, `Fax`, `HomePage`)

VALUES

(3,'Grandma Kelly's Homestead','Regina Murphy','Sales Representative','707 Oxford Rd.','Ann Arbor','MI','48104','USA','(313) 555-5735','(313) 555-3349',NULL),

它看起来像撇号和#34;凯利"产生问题。

3 个答案:

答案 0 :(得分:1)

我正在处理同样的问题。据我所知,你需要运行

Replace(string_column, '''', ''''''); 

Replace(string_column, '''', '&apos'); 
导入前在源数据库上

。有可能将它作为导入脚本的一部分运行,我不确定。我的脚本编写能力有限。

编辑:

这在MSSQL服务器上对我有用:

BEGIN TRANSACTION;
  UPDATE [dbo].[Table]
  SET Field = REPLACE(Field, '''', '''''');
COMMIT TRANSACTION;

答案 1 :(得分:0)

这是Milosz Bodzek的答案。

我只是重新制定了它。

看起来唯一现有的选择是复制数据库 - >在此数据库中进行更改(转义字符串) - >使用工作台向导执行迁移。

答案 2 :(得分:0)

这是MySQL Workbench(版本6.3.8)中的错误。这是错误页面:http://bugs.mysql.com/bug.php?id=83616

编辑:

事实证明,在Workbench中使用迁移向导进行迁移时,如果源列中的字符串(可能是text或varchar)中包含撇号字符,则会出现该错误,因为Workbench不会转义撇号。

我遇到了同样的问题并使用了Topplestack's workaround。我还在迁移后将MySQL替换为撇号,以避免更改源数据。

编辑2:

他们已经在MySQL Workbech 6.3.9中修复了它。这是来自bug fixes part of the changelog

的条目
  
      
  • 在表的文本字段中使用单引号(')会导致MySQL架构传输向导失败。 (Bug#24978403,Bug#83616)
  •