场景:

    需要迁移一个库里的数据到另一个库,两个库的表结构不一致,只需要一部分表数据。

方案一:

    1、Navicat 连接数据库,选中表,右键导出向导,选择导出格式为 SQL 脚本文件 (*.sql),下一步,选择要导出的表,全选处下来,导出到相同文件夹,下一步下一步,开始,这样就能在选择的文件夹下看到导出的表数据 insert sql 文件。


    2、对导出的表数据文件进行处理,调整不一致的表结构的 insert 语句,可采用 NotePad ++ 工具编辑,替换。

        2.1、Notepad ++ 行首尾添加指定字符

            在查找目标中输入“^”代表行首,“$”代表行末,下方的查找模式要改成“正则表达式”。
            把字符串替换为换行符

    3、增加清除要执行表语句 SQL 文件。

        3.1、cmd 下执行 “dir ./b > a.sql”


        注:用 a.sql 命名,是方便合并sql文件的时候,清除数据语句在开头

        3.2、对 a.sql 文件进行替换,快速清除 MySQL 表数据的语句:TRUNCATE TABLE 表名

            用 Notepad ++ 行开头替换

              替换前

               替换后


            用 Notepad ++ 尾替换

               替换前,注意这里的查找模式选择“普通”

               替换后

              清除杂数据



    4、对“调整好的 SQL 文件”和“清除SQL 文件”进行合并,避免要执行每个sql文件,少量的表还可以,几百张表就特别耗时间耗耐心了。

        4.1、cmd 下目录下执行语句:copy  /a *.sql all_db.sql

        注:*.sql  所有后缀为sql的文件

    5、对合并好的 SQL 文件进行测试。

    6、备份要执行的库,执行测试后的 SQL 文件。

    7、测试效果,大功告成。


方案二:大伙有更好的方案,欢迎加作者微信一起讨论。