我正在尝试将数据从MS SQL数据库迁移到MySQL数据库,但Workbench失败,因为它似乎根据列位置而不是列名读取/写入字段值 .

所以,给定:

  • 带有模式和数据的MS SQL源数据库

  • MySQL目标数据库,具有匹配(列顺序除外;请参阅下面的原因)模式和数据

MySQL Workbench能够迁移列顺序匹配的数据,但失败时会出现错误

Type mismatch fetching field 6 (should be time, was MYSQL_TYPE_STRING)

当我查看有问题的牌桌时,位置6的场地确实不同 .

在迁移数据时,有没有办法强制MySQL Workbench使用字段名称而不是位置?

MySQL Workbench支持生成SQL语句以手动编辑然后导入,这将是很好的,但由于未知原因,它不提供这样的选项 .

是否有任何其他工具或选项可以为MS SQL数据库生成更多或更少的MySQL兼容数据转储?

附:

我无法迁移数据和模式,因为它具有使用MS SQL特定语法的复杂视图,并且未正确检测列类型 . 但模式应该不是问题 - 我有Laravel迁移创建MySQL的所有表和视图,我使用了同一个Web应用程序与MS SQL和MySQL数据库 . 问题的核心是随着时间的推移收集了Laravel迁移并且他们正在使用 after() 函数在指定位置插入新列,但在MS SQL数据库上,相同的迁移总是在末尾添加列,因此 the field order in source and target schemas differ ,尽管它们不是是相同的,应该能够存储相同的数据 .