zoukankan      html  css  js  c++  java
  • clickhouse 导入mysql 的数据

    mysql 表结构test表,7700w+数据:

    CREATE TABLE `test` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `keyword` varchar(100) CHARACTER SET utf8 DEFAULT '' COMMENT '关键词',
    `platform` tinyint(4) NOT NULL DEFAULT '2' COMMENT '',
    `word_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '词类型',
    `ctime` int(10) DEFAULT '0' COMMENT '创建时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_keyword` (`keyword`) USING BTREE,
    KEY `idx_ctime` (`ctime`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=77715192 DEFAULT CHARSET=utf8mb4 comment='测试表';

    两种操作方式:

    一、直接远程跟mysql 连接,远程读取mysql 表的数据,此种方式读取非常慢,但是可以自定义某些字段,engine=MySQL 不能用小写。

    clickhouse 命令行执行,新建 test3 表,只取 id,keyword,ctime 3个字段,可参考官方文档 

    CREATE TABLE test3
    (
    `id` UInt32,
    `keyword` String,
    `ctime` UInt32
    )ENGINE = MySQL('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
    成功后,执行sql 查询 select count(`id`) from test3;  用时63秒
    执行sql 查询 select * from test3 order by id desc limit 5; 用时125秒
     
     
     
    二、创建clickhouse 表,把mysql 的数据导入进来,命令行执行 ,只能直接拷贝整个表里面的所有字段,创建 test2表
    CREATE TABLE test2 ENGINE = MergeTree
    order by id AS
    SELECT * FROM mysql('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
    会直接导入所有的7700w+数据,用时 161秒
    成功后,执行sql 查询 select count(`id`) from test2;  用时3.5秒
    执行sql 查询 select * from test2 order by id desc limit 5; 用时0.5秒
     
     
     
     
     
     

  • 相关阅读:
    总结下目前维护团队中用到的一些技术和工具
    一次修改时间导致的ORACLE 实例崩溃
    ruby 用watir 登录 CU的代码
    最近好烦.真的好烦
    Lucene.Net学习
    项目上线了,心情好爽
    轻松掌握XMLHttpRequest对象[转]
    微软发布3款SQL Injection攻击检测工具
    Domino开发
    用在JavaScript的RequestHelper [转]
  • 原文地址:https://www.cnblogs.com/wjq310/p/clickhouse.html
Copyright © 2011-2022 走看看