iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【ClickHouse】从Mysql迁移到ClickHouse大全
  • 558
分享到

【ClickHouse】从Mysql迁移到ClickHouse大全

mysql数据库ClickHouse 2023-09-25 09:09:48 558人浏览 八月长安
摘要

从关系型的数据库(Mysql)升级到列式管理的联机分析型数据库(ClickHouse),这不亚于是小米加步枪升级为加特林机关枪的性能提升了,查询能力等确实是大大的提升了,这出现了一个问题我们之前存储在mysql里的历史数据怎么往Clic

从关系型的数据库(Mysql)升级到列式管理的联机分析型数据库(ClickHouse),这不亚于是小米加步枪升级为加特林机关枪的性能提升了,查询能力等确实是大大的提升了,这出现了一个问题我们之前存储在mysql里的历史数据怎么往ClickHouse里面迁移呢,总不能不要吧那对业务来说他们可是不关心你底层数据怎么存储的,他们只希望数据准确,齐全,那下面我们就来说说都有哪些方式可以实现补全缺失的历史数据
环境:ClickHouse:21.8.12.1,python: 3.6.8

1、Mysql Engine

      ClickHouse本身支持通过选择Engine 来远程连接Mysql来访问Mysql的数据

1.1 语法

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster](    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],    ...) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'passWord'[, replace_query, 'on_duplicate_clause'])SETTINGS    [ connection_pool_size=16, ]    [ connection_max_tries=3, ]    [ connection_wait_timeout=5, ]    [ connection_auto_close=true, ]    [ connect_timeout=10, ]    [ read_write_timeout=300 ];

1.2 参数详解

host:port— MySQL 服务器地址。database— 远程数据库名称。table— 远程表名。user— MySQL 用户。password- 用户密码。replace_query— 将INSERT INTO查询转换为REPLACE INTO. 如果replace_query=1,则查询被替换。on_duplicate_clause—ON DUPLICATE KEY on_duplicate_clause添加到INSERT查询的表达式。示例:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1,哪里on_duplicate_clause是UPDATE c2 = c2 + 1。请参阅MySQL 文档以查找on_duplicate_clause可以与该ON DUPLICATE KEY子句一起使用的内容。要指定on_duplicate_clause您需要传递0给replace_query参数。如果同时传递replace_query = 1和on_duplicate_clause,ClickHouse 会生成异常。WHERE诸如此类的简单子句=, !=, >, >=, <, <=在 MySQL 服务器上执行。

1.3 示列

1.3.1 创建Mysql Engine 表

CREATE TABLE db_adp.mysql_table(    `float_nullable` Nullable(Float32),    `int_id` Int32)ENGINE = MySQL('localhost:3306', 'db_adp', 'mysql_table', 'reader', '123456')

1.3.2 写入历史数据到结果表中

INSERT INTO db_adp.sink_table SELECT `float_nullable`,`int_id`,FROMdb_adp.mysql_table

1.4 补充

更多有关于Mysql Engine 可参考官网:MySQL | ClickHouse Docs

 

2、Mysql Function 

     Mysql Function 的功能跟Engine 选择 Mysql 不太一样,ClickHouse 把桥接的方式封装成了一个Function方式,不需要再单独建立一张外表就能像使用Sum(),Max() 等函数一样直接使用

2.1、语法

mysql('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause'])

2.2、 参数详解

host:port— MySQL 服务器地址。database— 远程数据库名称。table— 远程表名。user— MySQL 用户。password- 用户密码。replace_query— 将INSERT INTO查询转换为REPLACE INTO. 可能的值:0- 查询执行为INSERT INTO.1- 查询执行为REPLACE INTO.on_duplicate_clause—ON DUPLICATE KEY on_duplicate_clause添加到INSERT查询的表达式。只能指定 with replace_query = 0(如果同时传递replace_query = 1and on_duplicate_clause,ClickHouse 会产生异常)。例子:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1;on_duplicate_clause这是UPDATE c2 = c2 + 1。请参阅 MySQL 文档以查找on_duplicate_clause可以与该ON DUPLICATE KEY子句一起使用的内容。当前在 MySQL 服务器上执行的简单WHERE子句,例如。=, !=, >, >=, <, <=其余条件和LIMIT采样约束只有在对 MySQL 的查询完成后才会在 ClickHouse 中执行。支持必须由 列出的多个副本|。例如:SELECT name FROM mysql(`mysql{1|2|3}:3306`, 'mysql_database', 'mysql_table', 'user', 'password');或者SELECT name FROM mysql(`mysql1:3306|mysql2:3306|mysql3:3306`, 'mysql_database', 'mysql_table', 'user', 'password');

2.3 示例

2.3.1 写入结果表中

INSERT INTO db_adp.sink_table SELECT `float_nullable`,`int_id`,FROMmysql('localhost:3306', 'db_adp', 'mysql_table', 'reader', '123456')

2.4、补充

 更多有关于Mysql Function 可参考官网:mysql | ClickHouse Docs


3、Altinity/clickhouse-mysql-data-reader


      该工具是Altinity 开源的一个可以通过增量/全量将Mysql 的数据导入到ClickHouse 中的实用Python工具,下面我们来实践一下(python 版本至少3.4+)

3.1 PyPi安装

3.1.1 Mysql 存储库

sudo yum install -y https://dev.mysql.com/get/mysql57-commUnity-release-el7-11.noarch.rpm
sudo yum install -y epel-release

3.1.2 ClickHouse-Client

curl -s Https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
sudo yum install -y clickhouse-client

3.1.3 依赖包

sudo yum install -y mysql-community-devel
sudo yum install -y mariadb-devel
sudo yum install -y GCc
sudo yum install -y python34-devel python34-pip

3.1.4 初始化Data Reader

sudo pip3 install clickhouse-mysql

3.1.5 检验是否安装成功

[user@localhost ~]$ which clickhouse-mysql/usr/bin/clickhouse-mysql
/usr/bin/clickhouse-mysql --install

 3.1.6 设置Mysql 账号权限

CREATE USER 'reader'@'%' IDENTIFIED BY '123456';CREATE USER 'reader'@'127.0.0.1' IDENTIFIED BY '123456';CREATE USER 'reader'@'localhost' IDENTIFIED BY '123456';GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE, SUPER ON *.* TO 'reader'@'%';GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE, SUPER ON *.* TO 'reader'@'127.0.0.1';GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE, SUPER ON *.* TO 'reader'@'localhost';FLUSH PRIVILEGES;
[mysqld]# mandatoryserver-id        = 1log_bin          = /var/lib/mysql/bin.logbinlog-fORMat    = row # very important if you want to receive write, update and delete row events# optionalexpire_logs_days = 30max_binlog_size  = 768M# setup listen addressbind-address     = 0.0.0.0

3.2 建对应的ClickHouse表

3.2.1 查看Mysql 表结构

show create table db_adp_rt.dws_game_product_online_h;

CREATE TABLE `dws_game_product_online_h` (  `statdate` bigint(11) NOT NULL COMMENT '统计时间,精确到小时,2020081316',  `game_id_jf` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '经分游戏ID',  `game_id_o2` int(11) NOT NULL COMMENT 'O2游戏ID',  `data_type` int(11) NOT NULL COMMENT '统计口径字段 1 - 染色,2 - 渠道,3 - 染色且渠道',  `game_name` varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT '游戏名称',  `agent_id` int(11) NOT NULL COMMENT '代投方ID, 0 - 未知',  `agent_name` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '代投方名称',  `media_type` int(11) NOT NULL DEFAULT '9' COMMENT '媒体类型',  `media_resource_type` int(11) NOT NULL DEFAULT '20' COMMENT '媒体内容类型',  `med_platform_id` int(11) NOT NULL DEFAULT '20' COMMENT 'o2的媒体类型;  --通过media_id关联',  `media_id` int(10) NOT NULL COMMENT '媒体ID',  `media_name` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '媒体名称',  `plat_id` int(11) NOT NULL COMMENT '平台: 0 - iOS, 1 - 安卓, 3 - PC, 4 - 网页, 255 - 全平台, -1 - 未知',  `plat_name` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '平台名称',  `impression_num` bigint(15) DEFAULT '0' COMMENT '曝光PV',  `click_num` bigint(15) DEFAULT '0' COMMENT '点击PV',  `api_impression_num` bigint(15) DEFAULT '0' COMMENT 'api拉取的曝光PV',  `api_click_num` bigint(15) DEFAULT '0' COMMENT 'api拉取的点击PV',  `activation_num` bigint(15) DEFAULT '0' COMMENT '激活数PV',  `activation_user_num` bigint(15) DEFAULT '0' COMMENT '激活用户数UV,按照deviceid_md5去重',  `reGISter_num` bigint(15) DEFAULT '0' COMMENT '新进PV',  `register_user_num` bigint(15) DEFAULT '0' COMMENT '新进UV(按照openid去重)',  `role_creation_num` bigint(15) DEFAULT '0' COMMENT '创角PV',  `role_creation_user_num` bigint(15) DEFAULT '0' COMMENT '创角UV(按照openid去重)',  `backflow_30day_num` bigint(15) DEFAULT '0' COMMENT '月回流PV',  `backflow_30day_user_num` bigint(15) DEFAULT '0' COMMENT '月回流UV',  `register_pay_num_today` bigint(15) DEFAULT '0' COMMENT '今日新进用户付费PV',  `register_pay_user_num_today` bigint(15) DEFAULT '0' COMMENT '今日新进用户付费UV',  `register_pay_amount_today` double DEFAULT '0' COMMENT '今日新进用户付费金额,单位:分',  `register_pay_num_30day` bigint(15) DEFAULT '0' COMMENT '过去30天的新进用户在当天的付费PV',  `register_pay_user_num_30day` bigint(15) DEFAULT '0' COMMENT '过去30天的新进用户在当天的付费UV(按照openid去重)',  `register_pay_amount_30day` double DEFAULT '0' COMMENT '过去30天的新进用户在当天的付费金额,单位:分',  `backflow_pay_num_today` bigint(15) DEFAULT '0' COMMENT '今日月回流用户付费PV',  `backflow_pay_user_num_today` bigint(15) DEFAULT '0' COMMENT '今日月回流用户付费UV(按照openid去重)',  `backflow_pay_amount_today` double DEFAULT '0' COMMENT '今日月回流用户付费金额,单位:分',  `backflow_pay_num_30day` bigint(15) DEFAULT '0' COMMENT '过去30天的月回流用户在当天的付费PV',  `backflow_pay_user_num_30day` bigint(15) DEFAULT '0' COMMENT '过去30天的月回流用户在当天的付费UV(按照openid去重)',  `backflow_pay_amount_30day` double DEFAULT '0' COMMENT '过去30天的月回流用户在当天的付费金额,单位:分',  `site_set_id` bigint(15) DEFAULT NULL COMMENT '广告版位id,腾讯广告中的site_id,头条广告中的CSITE',  `billing_type` int(10) DEFAULT NULL COMMENT '出价结算类型:1:CPD,2:CPM,3:CPC,4:CPA',  `update_time` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '更新时间',  UNIQUE KEY `statis_hour` (`statdate`,`game_id_o2`,`data_type`,`media_id`,`plat_id`,`site_set_id`,`billing_type`),  KEY `idx_gameid_hour` (`game_id_o2`,`statdate`)) ENGINE=TokuDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='实时归因三口径迭代_产品(染渠+染色+渠道)'

3.2.2 转换为ClickHouse 表

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString

根据上面的数据类型映射关系进行转换

CREATE TABLE db_adp.dws_game_product_online_h(    `statdate` Int32 COMMENT '统计时间,精确到小时,2020081316',    `game_id_jf` String COMMENT '经分游戏ID',    `game_id_o2` Int32 COMMENT 'O2游戏ID',    `data_type` UInt8 COMMENT '统计口径字段 0 - 统一,1 - 染色,2 - 渠道,3 - 染色且渠道',    `game_name` String COMMENT '游戏名称',    `agent_id` Int32 COMMENT '代投方ID, 0 - 未知',    `agent_name` String COMMENT '代投方名称',    `media_type` UInt16 DEFAULT 9 COMMENT '媒体类型',    `med_platform_id` UInt16 DEFAULT 20 COMMENT 'o2的媒体类型;  --通过media_id关联',    `media_id` Int32 COMMENT '媒体ID',    `media_name` String COMMENT '媒体名称',    `plat_id` UInt8 COMMENT '平台: 0 - IOS, 1 - 安卓, 3 - PC, 4 - 网页, 255 - 全平台, -1 - 未知',    `plat_name` String COMMENT '平台名称',    `cost` Float64 DEFAULT 0. COMMENT 'RTB 消耗单位:分',    `impression_num` UInt64 DEFAULT 0 COMMENT '曝光PV',    `click_num` UInt64 DEFAULT 0 COMMENT '点击PV',    `activation_num` UInt32 DEFAULT 0 COMMENT '激活数PV',    `activation_user_num` UInt32 DEFAULT 0 COMMENT '激活用户数UV,按照deviceid_md5去重',    `register_num` UInt32 DEFAULT 0 COMMENT '新进PV',    `register_user_num` UInt32 DEFAULT 0 COMMENT '新进UV(按照openid去重)',    `role_creation_num` UInt32 DEFAULT 0 COMMENT '创角PV',    `role_creation_user_num` UInt32 DEFAULT 0 COMMENT '创角UV(按照openid去重)',    `backflow_30day_num` UInt32 DEFAULT 0 COMMENT '月回流PV',    `backflow_30day_user_num` UInt32 DEFAULT 0 COMMENT '月回流UV',    `register_pay_num_today` UInt32 DEFAULT 0 COMMENT '今日新进用户付费PV',    `register_pay_user_num_today` UInt32 DEFAULT 0 COMMENT '今日新进用户付费UV',    `register_pay_amount_today` Float64 DEFAULT 0. COMMENT '今日新进用户付费金额,单位:分',    `register_pay_num_30day` UInt32 DEFAULT 0 COMMENT '过去30天的新进用户在当天的付费PV',    `register_pay_user_num_30day` UInt32 DEFAULT 0 COMMENT '过去30天的新进用户在当天的付费UV(按照openid去重)',    `register_pay_amount_30day` Float64 DEFAULT 0. COMMENT '过去30天的新进用户在当天的付费金额,单位:分',    `backflow_pay_num_today` UInt32 DEFAULT 0 COMMENT '今日月回流用户付费PV',    `backflow_pay_user_num_today` UInt32 DEFAULT 0 COMMENT '今日月回流用户付费UV(按照openid去重)',    `backflow_pay_amount_today` Float64 DEFAULT 0. COMMENT '今日月回流用户付费金额,单位:分',    `backflow_pay_num_30day` UInt32 DEFAULT 0 COMMENT '过去30天的月回流用户在当天的付费PV',    `backflow_pay_user_num_30day` UInt32 DEFAULT 0 COMMENT '过去30天的月回流用户在当天的付费UV(按照openid去重)',    `backflow_pay_amount_30day` Float64 DEFAULT 0. COMMENT '过去30天的月回流用户在当天的付费金额,单位:分',    `update_time` DateTime COMMENT '更新时间')ENGINE = TinyLog

3.3 数据导入

clickhouse-mysql \     --src-host=127.0.0.1 \     --src-user=reader \     --src-password=123456 \     --src-table=db_adp.dws_game_product_online_h     --table-migrate \     --dst-host=127.0.0.1 \     --dst-table=db_adp.dws_game_product_online_h \     --csvpool

3.3.1 更多的参数可参考下面的解释

usage: clickhouse-mysql [-h] [--config-file CONFIG_FILE] [--log-file LOG_FILE]                        [--log-level LOG_LEVEL] [--nice-pause NICE_PAUSE]                        [--dry] [--daemon] [--pid-file PID_FILE]                        [--binlog-position-file BINLOG_POSITION_FILE]                        [--mempool]                        [--mempool-max-events-num MEMPOOL_MAX_EVENTS_NUM]                        [--mempool-max-rows-num MEMPOOL_MAX_ROWS_NUM]                        [--mempool-max-flush-interval MEMPOOL_MAX_FLUSH_INTERVAL]                        [--csvpool]                        [--csvpool-file-path-prefix CSVPOOL_FILE_PATH_PREFIX]                        [--csvpool-keep-files] [--create-table-sql-template]                        [--create-table-sql] [--with-create-database]                        [--create-table-JSON-template] [--migrate-table]                        [--pump-data] [--install]                        [--src-server-id SRC_SERVER_ID] [--src-host SRC_HOST]                        [--src-port SRC_PORT] [--src-user SRC_USER]                        [--src-password SRC_PASSWORD]                        [--src-schemas SRC_SCHEMAS] [--src-tables SRC_TABLES]                        [--src-tables-where-clauses SRC_TABLES_WHERE_CLAUSES]                        [--src-tables-prefixes SRC_TABLES_PREFIXES]                        [--src-wait] [--src-resume]                        [--src-binlog-file SRC_BINLOG_FILE]                        [--src-binlog-position SRC_BINLOG_POSITION]                        [--src-file SRC_FILE] [--dst-file DST_FILE]                        [--dst-host DST_HOST] [--dst-port DST_PORT]                        [--dst-user DST_USER] [--dst-password DST_PASSWORD]                        [--dst-schema DST_SCHEMA] [--dst-distribute]                        [--dst-cluster DST_CLUSTER] [--dst-table DST_TABLE]                        [--dst-table-prefix DST_TABLE_PREFIX]                        [--dst-create-table]                        [--column-default-value [COLUMN_DEFAULT_VALUE [COLUMN_DEFAULT_VALUE ...]]]                        [--column-skip [COLUMN_SKIP [COLUMN_SKIP ...]]]                        [--ch-converter-file CH_CONVERTER_FILE]                        [--ch-converter-class CH_CONVERTER_CLASS]ClickHouse data readeroptional arguments:  -h, --help            show this help message and exit  --config-file CONFIG_FILE                        Path to config file. Default - not specified  --log-file LOG_FILE   Path to log file. Default - not specified  --log-level LOG_LEVEL                        Log Level. Default - NOTSET  --nice-pause NICE_PAUSE                        Make specified (in sec) pause between attempts to read                        binlog stream  --dry                 Dry mode - do not do anything that can harm. Useful                        for debugging.  --daemon              Daemon mode - Go to background.  --pid-file PID_FILE   Pid file to be used by the app in daemon mode  --binlog-position-file BINLOG_POSITION_FILE                        File to write binlog position to during bin log                        reading and to read position from on start  --mempool             Cache data in mem.  --mempool-max-events-num MEMPOOL_MAX_EVENTS_NUM                        Max events number to pool - triggering pool flush  --mempool-max-rows-num MEMPOOL_MAX_ROWS_NUM                        Max rows number to pool - triggering pool flush  --mempool-max-flush-interval MEMPOOL_MAX_FLUSH_INTERVAL                        Max seconds number between pool flushes  --csvpool             Cache data in CSV pool files on disk. Requires memory                        pooling, thus enables --mempool even if it is not                        explicitly specified  --csvpool-file-path-prefix CSVPOOL_FILE_PATH_PREFIX                        File path prefix to CSV pool files  --csvpool-keep-files  Keep CSV pool files. Useful for debugging  --create-table-sql-template                        Prepare CREATE TABLE SQL template(s).  --create-table-sql    Prepare CREATE TABLE SQL statement(s).  --with-create-database                        Prepend each CREATE TABLE SQL statement(s) with CREATE                        DATABASE statement  --create-table-json-template                        Prepare CREATE TABLE template(s) as JSON. Useful for                        IPC  --migrate-table       Migrate table(s). Copy existing data from MySQL                        table(s) with SELECT statement. Binlog is not read                        during this procedure - just copy data from the src                        table(s). IMPORTANT!. Target table has to be created                        in ClickHouse or it has to be created with --dst-                        create-table and possibly with --with-create-database                        options. See --create-table-sql-template and --create-                        table-sql options for additional info.  --pump-data           Pump data from MySQL binlog into ClickHouse. Copy rows                        from binlog until the end of binlog reached. When end                        of binlog reached, process ends. Use in combination                        with --src-wait in case would like to continue and                        wait for new rows after end of binlog reached  --install             Install service file(s)  --src-server-id SRC_SERVER_ID                        Set server_id to be used when reading date from MySQL                        src. Ex.: 1  --src-host SRC_HOST   Host to be used when reading from src. Ex.: 127.0.0.1  --src-port SRC_PORT   Port to be used when reading from src. Ex.: 3306  --src-user SRC_USER   Username to be used when reading from src. Ex.: root  --src-password SRC_PASSWORD                        Password to be used when reading from src. Ex.: qwerty  --src-schemas SRC_SCHEMAS                        Comma-separated list of databases (a.k.a schemas) to                        be used when reading from src. Ex.: db1,db2,db3  --src-tables SRC_TABLES                        Comma-separated list of tables to be used when reading                        from src. Ex.: table1,table2,table3Ex.:                        db1.table1,db2.table2,db3.table3Ex.:                        table1,db2.table2,table3  --src-tables-where-clauses SRC_TABLES_WHERE_CLAUSES                        Comma-separated list of WHERE clauses for tables to be                        migrated. Ex.: db1.t1="a=1 and b=2",db2.t2="c=3 and                        k=4". Accepts both (comma-separated) clause (useful                        for short clauses) or file where clause is located                        (useful for long clauses)  --src-tables-prefixes SRC_TABLES_PREFIXES                        Comma-separated list of table prefixes to be used when                        reading from src.Useful when we need to process                        unknown-in-advance tables, say day-named log tables,                        as log_2017_12_27Ex.: mylog_,anotherlog_,extralog_3  --src-wait            Wait indefinitely for new records to come.  --src-resume          Resume reading from previous position. Previous                        position is read from `binlog-position-file`  --src-binlog-file SRC_BINLOG_FILE                        Binlog file to be used to read from src. Related to                        `binlog-position-file`. Ex.: mysql-bin.000024  --src-binlog-position SRC_BINLOG_POSITION                        Binlog position to be used when reading from src.                        Related to `binlog-position-file`. Ex.: 5703  --src-file SRC_FILE   Source file to read data from. CSV  --dst-file DST_FILE   Target file to be used when writing data. CSV  --dst-host DST_HOST   Host to be used when writing to dst. Ex.: 127.0.0.1  --dst-port DST_PORT   Port to be used when writing to dst. Ex.: 9000  --dst-user DST_USER   Username to be used when writing to dst. Ex: default  --dst-password DST_PASSWORD                        Password to be used when writing to dst. Ex.: qwerty  --dst-schema DST_SCHEMA                        Database (a.k.a schema) to be used to create tables in                        ClickHouse. It overwrites source database(s) name(s),                        so tables in ClickHouse would be located in                        differently named db than in MySQL. Ex.: db1  --dst-distribute      Whether to add distribute table  --dst-cluster DST_CLUSTER                        Cluster to be used when writing to dst. Ex.: cluster1  --dst-table DST_TABLE                        Table to be used when writing to dst. Ex.: table1  --dst-table-prefix DST_TABLE_PREFIX                        Prefix to be used when creating dst table. Ex.:                        copy_table_  --dst-create-table    Prepare and run CREATE TABLE SQL statement(s).  --column-default-value [COLUMN_DEFAULT_VALUE [COLUMN_DEFAULT_VALUE ...]]                        Set of key=value pairs for columns default values.                        Ex.: date_1=2000-01-01 timestamp_1=2002-01-01\                        01:02:03  --column-skip [COLUMN_SKIP [COLUMN_SKIP ...]]                        Set of column names to skip. Ex.: column1 column2  --ch-converter-file CH_CONVERTER_FILE                        Filename where to search for CH converter class  --ch-converter-class CH_CONVERTER_CLASS                        Converter class name in --ch-converter-file file

3.4、补充

 官网上说使用pypy 性能上能提升10倍,大家也可以尝试下:Performance

4、CSV及TSV方式

像传统的将Source数据先生成一个CSV/TSV文件,再将数据文件导入到结果表中的方式,这里不过多赘叙,大家可参看一面的链接

Upload a CSV File
Insert Local Files


5、对比

操作难易数据大小(GB)时长(s)

支持增量

Mysql Engine比较易3.6457.261
Mysql Function3.6439.634
Altinity首次需安装,以后使用易3.6424.2

来源地址:https://blog.csdn.net/Zsigner/article/details/128327141

您可能感兴趣的文档:

--结束END--

本文标题: 【ClickHouse】从Mysql迁移到ClickHouse大全

本文链接: https://www.lsjlt.com/news/417281.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【ClickHouse】从Mysql迁移到ClickHouse大全
    从关系型的数据库(Mysql)升级到列式管理的联机分析型数据库(ClickHouse),这不亚于是小米加步枪升级为加特林机关枪的性能提升了,查询能力等确实是大大的提升了,这出现了一个问题我们之前存储在Mysql里的历史数据怎么往Clic...
    99+
    2023-09-25
    mysql 数据库 ClickHouse
  • 从ES迁移到ClickHouse的原因有哪些
    这篇文章主要讲解了“从ES迁移到ClickHouse的原因有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“从ES迁移到ClickHouse的原因有哪些”...
    99+
    2024-04-02
  • 浅析mysql迁移到clickhouse的5种方法
    数据迁移需要从mysql导入clickhouse, 总结方案如下,包括clickhouse自身支持的三种方式,第三方工具两种。 create table engin mysql CREATE TABLE...
    99+
    2024-04-02
  • 怎么从MySQL迁移到Oracle
    这篇文章主要讲解了“怎么从MySQL迁移到Oracle”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么从MySQL迁移到Oracle”吧! 1. 自动增...
    99+
    2024-04-02
  • 从 MySQL迁移数据到Oracle
    从 MySQL 迁移数据到 Oracle 中的全过程 zhengqingya 22019.12.26 16:53:14字数 911阅读 480 一、前言 这里记录一次将MySQL数据库中的表数...
    99+
    2024-01-21
    mysql 数据库 中间件 centos
  • 新一代数据集成工具ETLCloud入门实践:实现MySQL到ClickHouse的快速迁移
    背景 大数据(BigData)最重要的是数据,没有数据其他的就无从谈起(如今GPT大热,也是得益于海量数据的采集、存储、计算及治理能力的提升)。大数据项目开发的首要任务就是采集海量数据,这就要求我们具备海量数据采集的能力。 在实际工作中,数...
    99+
    2023-08-18
    MySQL ClickHouse ETLCloud 数据集成工具 可视化数据集成
  • GoldenGate从oracle迁移数据到mysql
      1       软件简介 安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为: Oracle G...
    99+
    2024-04-02
  • MySQL 到 ClickHouse 实时数据同步实操
    摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据、表多、数据量大等情况就难以同步。我自己亲测了一种方式,可以非常方便地...
    99+
    2024-04-02
  • 如何将MySQL从Windows迁移到Linux
    表名问题    lower_case_file_systemSystem VariableNamelower_case_file_systemVariable Sco...
    99+
    2024-04-02
  • Django数据怎么从sqlite迁移数据到MySQL
    Django数据怎么从sqlite迁移数据到MySQL,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。昨天快速搭建了一套自己的知识库。感觉一下子有了很多的事情要做...
    99+
    2023-06-04
  • DynamoShake怎么从dynamodb迁移到mongodb
    DynamoShake怎么从dynamodb迁移到mongodb,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。DynamoShake基本功能D...
    99+
    2024-04-02
  • 为什么从GoLang迁移到NodeJS
    这篇文章主要介绍“为什么从GoLang迁移到NodeJS”,在日常操作中,相信很多人在为什么从GoLang迁移到NodeJS问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什...
    99+
    2024-04-02
  • 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践
    在之前这一篇中我们分享过使用chameleon工具完成MySQL到openGauss的全量数据复制、实时在线复制。9.30新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、...
    99+
    2023-08-17
    数据库 mysql bash 云原生
  • SQLITE怎样迁移到MYSQL
    SQLITE怎样迁移到MYSQL,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。接同事需求,要求从SQLITE的数据转到MYSQL,这东西以前也...
    99+
    2024-04-02
  • sqlite怎么迁移到mysql
    本篇内容介绍了“sqlite怎么迁移到mysql”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.SQLi...
    99+
    2024-04-02
  • 从MYSQL到oracle的迁移以及备份的方法
    本篇内容介绍了“从MYSQL到oracle的迁移以及备份的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • 【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server
    【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server HBase从C50迁移到6.5.1(02)C50上准备FTP Server登录老...
    99+
    2023-09-05
    FusionInsight HBase 数据迁移 数据科学
  • SpringBoot 整合 clickhouse和mysql 手把手教程全网最详细
    最近做一个项目 需要 整合mysql clickhouse 多数据源 后台用的是ruoyi框架 1. 首先pom引入相关依赖 com.clickhouse clickhouse-jdbc ...
    99+
    2023-08-19
    mysql spring boot clickhouse
  • 记一次MySQL数据迁移到SQLServer全过程
    为什么要做迁移? 由于系统版本、数据库的升级,导致测试流程阻塞,为了保证数据及系统版本的一致性,我又迫切需要想用这套环境做性能测试,所以和领导、开发请示,得到批准后,便有了这次学习的机会,所以特此来记...
    99+
    2023-08-31
    sqlserver mysql 数据库
  • Mysql迁移到kingbase全过程调整方案解决(人大金仓)(java)
    前言: 按项目国产化需求,需要将MySQL数据库迁移成kingbase数据库,后端服务是java 现先用本地创建kingbase-win版服务器进行流程、代码测试 目录 前言: 流程: 一.从官网下载文件 1.下载安装包  2.下载需要的授...
    99+
    2023-08-31
    mysql mybatis java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作