从 MySQL 转储导入到 Clickhouse
Importing from MySQL dump to Clickhouse
我想从 MySQL 转储导入 Clickhouse。我试过 official docs but cannot find anything. I've tried importing using CSV following 。任何帮助表示赞赏。我有一个 Ubuntu 16.04 LTS。
您可以使用 MySQL 命令行将数据从 MySQL 导出到 TSV 文件:
mysql -Bse "select * from TABLE_NAME" > table.tsv
然后将数据导入ClickHouse:
cat table.tsv | clickhouse-client --query="INSERT INTO TABLE_NAME FORMAT TabSeparated"
对于小数据,导出到 tsv 可以,但大数据就不行,因为只导出会花费很多时间。
在这种情况下,您需要直接从 stdout 导入,clickhouse 知道如何完美地做到这一点。
示例代码:
mysql -u user -ppass --compress -ss -e "SELECT * FROM table WHERE id >0 AND id <=1000000" db_name | sed 's/\"//g;s/\t/","/g;s/^/"/;s/$/"/' | clickhouse-client --query="INSERT INTO db_name.table FORMAT CSV"
使用这种方法,我在 clickhouse 中在 7-10 小时内导入了 500 GB 和 19 亿行
我想从 MySQL 转储导入 Clickhouse。我试过 official docs but cannot find anything. I've tried importing using CSV following
您可以使用 MySQL 命令行将数据从 MySQL 导出到 TSV 文件:
mysql -Bse "select * from TABLE_NAME" > table.tsv
然后将数据导入ClickHouse:
cat table.tsv | clickhouse-client --query="INSERT INTO TABLE_NAME FORMAT TabSeparated"
对于小数据,导出到 tsv 可以,但大数据就不行,因为只导出会花费很多时间。
在这种情况下,您需要直接从 stdout 导入,clickhouse 知道如何完美地做到这一点。
示例代码:
mysql -u user -ppass --compress -ss -e "SELECT * FROM table WHERE id >0 AND id <=1000000" db_name | sed 's/\"//g;s/\t/","/g;s/^/"/;s/$/"/' | clickhouse-client --query="INSERT INTO db_name.table FORMAT CSV"
使用这种方法,我在 clickhouse 中在 7-10 小时内导入了 500 GB 和 19 亿行