想法是这样的,有2台服务器,其中一台服务器A是存有所有数据的,另一台B只需要某一些数据,例如某个具体条件的数据,请问如何从A导出带条件的数据再导入到B中呢
如果需要生成sql文件的话,是不是不好实现
关联表之间存在的是他们在服务器A中的id号
这时候存入到B中会不会混乱呢1)我不会导出
2)即使导出了,那关联表之间的关系会混乱吗?

解决方案 »

  1.   

    1、用MYSQLDUMP导出 ,
    mysqldump -uroot -p test cms_content3 --where "tid=1"> R:\TEMP\a.sql
    OR
    先连接表,生成新的表后,再用MYSQLDUMP导出2、举例说明
      

  2.   

    你说的不太详细,我按我的理解说,你可以在服务器A中建一个符合B条件的表tmp,先把数据放到tmp中,再把这个表导出,再导入到B中,这个方法不一定好,只供参考
      

  3.   

    方法一:在服务器A 中使用 select * from table1 where 某个具体条件 INTO OUTFILE 'file_name'
    然后再把文件传到另一台B上,再用LOAD DATA INFILE  'file_name' INTO TABLE tbl_name
      

  4.   

    方法二:mysqldump 。 --where "某个具体条件" > xx.sql然后把 xx.sql 再
    mysql .... < xx.sql
      

  5.   

    如果你要生成sql文件的话,用MYSQLDUMP,如果只是要数据 ,用
    SELECT INTO OUTFILE
      

  6.   

    SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。file_name不能是一个原有的文件。原有文件会阻止例如“/etc/passwd”的文件和数据库表被销毁。SELECT...INTO OUTFILE语句的主要作用是让您可以非常快速地把一个表转储到服务器机器上。如果您想要在服务器主机之外的部分客户主机上创建结果文件,您不能使用SELECT...INTO OUTFILE。在这种情况下,您应该在客户主机上使用比如“mysql –e "SELECT ..." > file_name”的命令,来生成文件。SELECT...INTO OUTFILE是LOAD DATA INFILE的补语;用于语句的exort_options部分的语法包括部分FIELDS和LINES子句,这些子句与LOAD DATA INFILE语句同时使用。请参见13.2.5节,“LOAD DATA INFILE语法”。
      

  7.   

    举个例子说
    A中表,id都是自动增长的
    paper试卷,id可能是15,包括topic试题,id为4,5,6
    关联的时候paper中存的是topic的id,4,5,6
    按条件导出的sql中paper关联的topic是4,5,6
    然后再导入B中,paper的id是1
    那么topic只有3条记录,id是1,2,3了
    那怎么他们之间怎么关联呢
      

  8.   

    另外增加1个字段,保存Topic的id
      

  9.   

    表topic 
    ID Title  
    1  test    
    2  test2
    表topicitem
    ID  content topic
    1      aa     1
    2      bb     1
    3      cc     2
    4      dd     2
    select * from topic where id = 2
    select * from topicitem where topicid = 2
    这是在导入的时候,存入新的topic的id为1了,但topicitem中topic还是为2.。。
    然后就报错了
      

  10.   

    因为导出的topicitem数据中,topic字段存的是2
    topic存入以后是1
    这就报错了
      

  11.   

    topic存入以后是1:为什么
    你是怎么导出的