linux mysql  (2台机器数据同步,2机器上各自安装一个mysql服务器 ,机器分别是a b , 复制环境,a 主 b从)
有时候复制会中断,我必须做选择性数据同步(a机器上某个表的部分数据(一般几行)取出来插入到 b机器的对应同名表)
mytable 的记录过大2百万全表导出导入花好几份。我的方案如下a机器上的操作我 用 mysqldump -uroot -p111 mydb mytable -w"id>60 and id< 65" > a.sql  (1秒不到)
但是有一个缺点 mysqldump -w方式出来的sql 结构如下DROP TABLE IF EXISTS `mytable `;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mytable ` (
 。  KEY `idx_del` (`outcomeId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `mytable `
--
-- WHERE:  id>0 limit 1LOCK TABLES `mytable ` WRITE;
/*!40000 ALTER TABLE `mytable ` DISABLE KEYS */;
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
/*!40000 ALTER TABLE `mytable ` ENABLE KEYS */;
UNLOCK TABLES;
b 机器上
a机器把a.sql传到b机器上后, b机器不能直接恢复 需要在另外一个库恢复之后再insert 进入mydb
想问 
mysqldump -uroot -p111 mydb mytable -w或者有其他方式
只导出insert的sql 语句 
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
这个mysqldump 可以实现吗?
即mysqldump能够选择性导出部分记录 (只要insert的sql语句 不要其他create语句信息以及注释信息)  ??() 

解决方案 »

  1.   

    初步想法用linux的强大shell 文本处理来做
    找到第一个出现insert into  的所在行 以及最后一个出现insert into  的所在行
    把他们的内容提出来 放到一个新文件 
      

  2.   

    只导出insert的sql 语句  
    INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
    这个mysqldump 可以实现吗?
    不能,只能用软件自行编辑
      

  3.   

    当然如果有mysql自带的命令傻瓜化处理(一条命令)就最好了 shell 写调试花功夫啦
      

  4.   

    你可以用参数 --no-create-info 以避免生成CREATE TABLE 语句。
      

  5.   

    -t -w"....."现在想搞彻底  不要那些
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
    -- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
    ----
    -- Dumping data for table `mytable`
    --
    -- WHERE:  id>0 limit 100LOCK TABLES `mytable` WRITE;
    unlock table`mytable` WRITE;这些 都不要 , 该如何做 ???
      

  6.   

    奋斗成果         -t --compact -w"dddd"最后只留下一点点了--
    -- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
    --
    insert into.....................
    现在把
    --
    -- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
    --这个去掉 就完全 ok 了
      

  7.   

    -t --compact -w"dddd"
    经过2机器验证 是可行的  节省了大量的临时表