利用导出的数据重新导入数据库的时候,如果遇到一个错误,对于出错的表是可以实现回滚的。但是现在的问题是如何回滚前面导入的表数据,希望做到只要错误,所有的数据都能回滚

解决方案 »

  1.   

    可以二进制日志恢复。begin tran
    insert into tb(field1,field2,field3)
    va(...,...,...)
    rollback
    end tran也是可以回滚的。
      

  2.   

    假设你回复的是库DB1
    写一脚本mysql -uroot -p123 db1</home/db1.sql>/home/restore.txt
    if restore.txt is not empty then
       mysql -uroot -p123 -e 'drop database db1;create database db1;'
    fi 脚本思路就是上面这样的。
      

  3.   

    没有办法实现。因为导出的脚本中或许有 create table , create index ...等DDL语句,这样会导致commit
    你必须先编辑一下脚本,从中删除这类的隐式commit语句。然后开启事务,再导入。这样或许可以实现全部回滚.
      

  4.   

      如果只需要导入数据 就是只有insert语句 这样可以做到回滚吗 我现在的做法是用mysqldump导出,然后读出所有的insert语句,然后用jdbc去做事务,执行所有的insert语句,这样的做法可以保证回滚,但是效率肯定是不如直接导入的
      

  5.   

    没办法回滚  
    只能在你导入之前  备份一下原库 或者你非常了解导入的sql  如何删掉
      

  6.   

    导出的数据是什么,是否有CREATE、DROP之类的,如果有,
    没有 办法,只有用变通方法,出错则删除数据库
      

  7.   

    如果只需要导入数据 就是只有insert语句 这样可以做到回滚吗?可以啊,要是insert 放到同一个事务里效率一样。不像你说的:但是效率肯定是不如直接导入的
      

  8.   

    如果你是Hibernate操作MySQL数据库,它自己有事务机制。其他的不是特别清楚