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 表空间使用率
    sqlserver 查询主外键索引常用语句
    sqlserver查版本信息
    sqlserver事务日志已满原因分析
    sqlserver创建dblink链接Oracle
    Oracle的DBMS_METADATA.GET_DDL()函数
    Mysql 基于GTID的主从复制(实操)
    Mysql 基于日志点的主从复制(实操)
    修改Linux命令提示符
    MYSQL 二进制安装
  • 原文地址:https://www.cnblogs.com/wjq310/p/clickhouse.html
Copyright © 2011-2022 走看看