如何在重命名某些表/列而不导入其他表/列的同时导入mysql转储?

如何在重命名某些表/列而不导入其他表/列的同时导入mysql转储?,sql,mysql,mysqlimport,Sql,Mysql,Mysqlimport,我正在将一个遗留数据库导入到我们程序的新版本中,我想知道是否有一种方法可以不从转储中导入某些列/表,并在导入时重命名其他表/列?我知道我可以在理论上编辑转储文件,但这似乎是一种黑客行为,到目前为止,我的编辑器都无法打开1.3 gb的文件(是的,我已经在这里阅读了关于这个问题。不,到目前为止,没有一个答案对我有效) 建议?我想说的是将其导入临时数据库并实时执行更改-可能会应用预构建的脚本来执行必要的操作: DROP TABLE .... DROP TABLE .... DROP TABLE ...

我正在将一个遗留数据库导入到我们程序的新版本中,我想知道是否有一种方法可以不从转储中导入某些列/表,并在导入时重命名其他表/列?我知道我可以在理论上编辑转储文件,但这似乎是一种黑客行为,到目前为止,我的编辑器都无法打开1.3 gb的文件(是的,我已经在这里阅读了关于这个问题。不,到目前为止,没有一个答案对我有效)


建议?

我想说的是将其导入临时数据库并实时执行更改-可能会应用预构建的脚本来执行必要的操作:

DROP TABLE ....
DROP TABLE ....
DROP TABLE ....
ALTER TABLE ..... DROP column ....
然后将完成的结果复制到生产数据库中

这也可以很好地自动化


与找到一个编辑转储文件的工具相比,它的运行速度更快,问题也更少(或者,与这些工具一样,经常尝试五种不同的工具,却发现没有一种工作得很好)

通过拒绝某些表的导入权限,并使用--force作为命令行选项,可以不导入这些表

不导入某些列或重命名它们是不可能的(至少在导入后不编辑转储文件或进行修改)

我的建议是:

  • 将表导入另一个数据库(1.3G应该仍然非常快)
  • 执行删除/重命名操作
  • 导出数据以创建新的转储文件

如果您担心转储包含多个数据库,mysql命令行工具有一个-o标志,只导入一个。

根据复杂性,您可能需要一个全面的迁移工具。mysql的开发人员已经就此写了一篇文章: