有这样一个需求,两套同样的系统,有各自的数据库,什么都是一样的只是两个系统之间互不相连,想在向把其中一个系统的数据倒出来与另一个系统的数据汇总,小弟用mysqldump将数据导出来后在导入另一个系统时如果出现重复的主键数据就会出错,小弟试了下--replace关键字在导入的时候不支持,请教大家有没有什么办法解决这个问题。不知道我的问题描述清楚了没有。谢谢大家帮忙。

解决方案 »

  1.   

    这种情况下一般是手工逐表来分析导入的。比如数据DB1 , DB2 各有表 tbl1,tbl2,tbl3,..tbln针对每个表,都要事先知道如何进行两表的数据合并。特别是在主键相同的时候如果操作。
      

  2.   

    我个人感觉先在第二个系统里里重新建立数据库和表,用来接收第一个系统的数据
    然后把第二个系统数据库里的表和已导入的表进行合并,可以考虑用
    insert into table(col1,col2..)
    select col1,col2,.. from table1
    或者写成存储过程
    这样应该可以避免主键带来的麻烦吧
    顺便问一句,你的主键是自增的吗?
      

  3.   

    也就是说第一次导入没有问题,第二次导入就会出现重复了,假如不考虑先删除在导入的方式,还有办法吗,在使用
    mysql -u root -proot 数据库名< d:\test.sql
    导入时有没有类似replace的关键字
    谢谢大家帮忙
      

  4.   

    手工修改一下你的d:\test.sql
    把其中的insert 语句改为INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;
    UPDATE table SET c=c+1 WHERE a=1;
      

  5.   

    将数据导入另一表后,检查此表KEY字段与工作表是否OR
    只导入不重复的数据
      

  6.   

    您好!能给我解释下  
    ON DUPLICATE KEY UPDATE c=c+1; 
    UPDATE table SET c=c+1 WHERE a=1;
    两句话的意思吗,小弟是新手,谢谢了。 
      

  7.   

    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;如果主键记录已存在,则等同于UPDATE table SET c=c+1 WHERE a=1;
    http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#insert
    13.2.4. INSERT语法
      

  8.   

    在数据库A中再建立一个相同结构的表,将数据库B中的表导入到A库中新建的表中。
    然后对数据库A中的两个表进行union 可以将所有记录查询出来。
      

  9.   

    可以这样:1、先在要导入的数据库(应该是MYSQL吧)创建数据库,create database dbname; 2、然后进入这个数据库:use dbname; 3、在mysql>提示符下输入:source d:/test.sql注意这里的路径就是你到处后存放的test的路径,还有路径分隔符是"/"而不是"\";先试一下嘛,我也遇到这个问题,刚刚才解决
      

  10.   

    INSERT INTO table (a,b,c) VALUES (1,2,3) 
      ON DUPLICATE KEY UPDATE c=c+1; 
    UPDATE table SET c=c+1 WHERE a=1;