首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用文件将数据从mysql迁移到clickhouse?

问如何使用文件将数据从mysql迁移到clickhouse?
EN

Stack Overflow用户
提问于 2018-09-15 21:28:26
回答 2查看 1.2K关注 0票数 1

我需要将数据从Mysql迁移到ClickHouse并做一些测试。这两个数据库网络不工作,我只能用文件传输。我首先想到的是可以使用mysqldump工具导出.sql文件。

mysqldump字符集-uroot - -h192.168.212.128 - -P3306 =utf8-uroot -proot database_name table_name > test.sql

然后我发现mysql表中有1.2亿条数据。以这种方式导出的.sql文件的insert语句非常长。如何避免这种情况,比如每次导出1000个数据作为insert语句?

另外,这个.sql文件太大了,能不能分成小文件,需要怎么做?

EN

回答 2

Stack Overflow用户

发布于 2018-09-15 21:45:12

mysqldump有一个使用多值插入打开或关闭的选项。您可以根据自己的喜好执行以下任一操作:

每个值单独的Insert语句:

代码语言:javascript
复制
mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --skip-extended-insert -uroot -proot database_name table_name > test.sql 

多值插入语句:

代码语言:javascript
复制
mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --extended-insert -uroot -proot database_name table_name > test.sql 

因此,您可以做的是首先使用以下内容转储模式:

代码语言:javascript
复制
mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --no-data -uroot -proot database_name > dbschema.sql 

然后将数据转储为单独的insert语句:

代码语言:javascript
复制
mysqldump -t -h192.168.212.128 -P3306 --default-character-set=utf8 --skip-extended-insert --no-create-info -uroot -proot database_name table_name > test.sql 

然后,您可以将插入文件拆分为尽可能多的片段。例如,如果您在UNIX上,请使用split命令。

如果您担心导入需要多长时间,那么您可能还需要添加--disable-keys选项来加快插入速度。

但我的建议是不要太担心这一点。mysqldump不应该超过MySQL在单个语句中导入的能力,并且它的运行速度应该比单个插入的速度快。至于文件大小,SQL的一个优点是它的压缩效果很好。这个几千兆字节的SQL转储文件将转换为gzip或bzip或zip文件。

编辑:如果您确实希望在多值插入转储中调整每次插入的值的数量,可以添加--max_allowed_packet选项。例如--max_allowed_packet=24M。数据包大小决定了单个数据包(例如插入)的大小,因此如果您将其设置得足够低,它应该会减少每次插入的值的数量。尽管如此,在你开始搞乱之前,我还是会试一试。

票数 1
EN

Stack Overflow用户

发布于 2018-12-18 20:30:34

clickhouse-client --host="localhost“--port="9000”--max_threads="1“--query="INSERT INTO database_name.table_name FORMAT Native”< clickhouse_dump.sql

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52345137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档