Mysql 如何获取SQL转储并修改它以适应不同的数据库表结构?

Mysql 如何获取SQL转储并修改它以适应不同的数据库表结构?,mysql,sql,dump,Mysql,Sql,Dump,我在升级网站上的购物车软件时遇到了巨大的困难,因为数据库结构发生了变化,比如列的顺序不同,有时甚至是新列。我想做的是,获取我的旧SQL转储文件,并对它们进行格式化以适应新的结构,就这一次,这样我就可以让它工作了。如何做到这一点 欢迎提出任何建议 谢谢大家! 将其加载到一个空数据库中,使用SQL将数据移动到您想要的格式,再次转储数据,然后将其加载到您最终想要的位置。我过去曾使用一种更具战术性(如果不是暴力的话)的方法做过类似的事情 我编写了一些代码来解析转储文件中的DML语句,并将每条语句转换为数

我在升级网站上的购物车软件时遇到了巨大的困难,因为数据库结构发生了变化,比如列的顺序不同,有时甚至是新列。我想做的是,获取我的旧SQL转储文件,并对它们进行格式化以适应新的结构,就这一次,这样我就可以让它工作了。如何做到这一点

欢迎提出任何建议


谢谢大家!

将其加载到一个空数据库中,使用SQL将数据移动到您想要的格式,再次转储数据,然后将其加载到您最终想要的位置。

我过去曾使用一种更具战术性(如果不是暴力的话)的方法做过类似的事情


我编写了一些代码来解析转储文件中的DML语句,并将每条语句转换为数据结构。然后,可以使用数据结构填充类似于目标模式所需DML的格式字符串。然后将格式字符串写入一个新文件(并重复)。

我使用Squeal Pro管理我的数据库,当我移动内容并重新转储时,它们的格式完全相同。我需要完全删除一些列,我看不出有什么方法可以做到这一点?MySQL不是我的强项。如果MySQL不允许您使用ALTERTABLE删除列,那么您可以使用新模式创建一个新表,然后向该表中插入正确的数据。如果MySQL不允许您重命名表,那么请删除旧表,使用旧名称创建它,但使用新模式,然后将其复制回来。您需要了解外键和其他可能阻碍此过程的关系。只要删除或禁用它们,然后在完成后重新创建/重新启用它们。你的意思是,我可以使用PHP连接数据库,提取我需要的信息,并使用循环以正确的转储格式为我的新数据库输出字符串?你也可以这样做……我建议不要在线连接数据库,创建所有DML语句的转储并脱机重新格式化它们。您编写的用于执行转储解析、重新格式化和生成新DML文件的脚本可以使用PHP完成。从PHP查询记录并没有什么问题,我认为使用dump实用程序和处理dump文件更快,而且它符合让数据库离线进行迁移的需要。无法迁移仍在写入的数据库。。。