clickhouse-数据导入导出方案

这篇具有很好参考价值的文章主要介绍了clickhouse-数据导入导出方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

clickhouse有多种数据的导入导出方式,可以灵活使用,下面对这些方式分别做些介绍,导入导出的写法与格式和格式设置有关。

二、导入

1.从s3导入

详情可查看官网,也可以在这里获取数据集

-- 建库建表
CREATE DATABASE git;

CREATE TABLE git.commits
(
    hash String,
    author LowCardinality(String),
    time DateTime,
    message String,
    files_added UInt32,
    files_deleted UInt32,
    files_renamed UInt32,
    files_modified UInt32,
    lines_added UInt32,
    lines_deleted UInt32,
    hunks_added UInt32,
    hunks_removed UInt32,
    hunks_changed UInt32
) ENGINE = MergeTree ORDER BY time;

-- 导入数据
INSERT INTO git.commits SELECT *
FROM s3('https://datasets-documentation.s3.amazonaws.com/github/commits/clickhouse/commits.tsv.xz', 'TSV', 'hash String,author LowCardinality(String), time DateTime, message String, files_added UInt32, files_deleted UInt32, files_renamed UInt32, files_modified UInt32, lines_added UInt32, lines_deleted UInt32, hunks_added UInt32, hunks_removed UInt32, hunks_changed UInt32')

0 rows in set. Elapsed: 1.826 sec. Processed 62.78 thousand rows, 8.50 MB (34.39 thousand rows/s., 4.66 MB/s.)

s3的表达式如下

s3(path, [aws_access_key_id, aws_secret_access_key,] [format, [structure, [compression]]])
  • path — 包含文件路径的存储桶 URL。 这在只读模式下支持以下通配符:*、?、{abc,def} 和 {N…M},其中 N、M 是数字,‘abc’、‘def’ 是字符串。 有关更多信息,请参阅有关在路径中使用通配符的文档。
  • format — 文件的格式。
  • structure — 表的结构。 格式为“column1_name、column1_type、column2_name、column2_type,…”。
  • compression — 参数是可选的。 支持的值:none、gzip/gz、brotli/br、xz/LZMA、zstd/zst。 默认情况下,它将按文件扩展名自动检测压缩。

所以我们可以看出来上面的insert语句中,第一个参数是s3的url,第二个参数是说明文件为TSV文件,第三个参数把表的结构写下来了,这里没有给第四个参数,因为默认检测了扩展名为xz,所以不需要提供

2.从本地导入

这里可以通过官网获取更详细的内容

2.1 从本地其他文件导入

# 写法一:
clickhouse-client -q "INSERT INTO git.com FORMAT CSV" < out.csv
# 写法二:
INSERT INTO com
FROM INFILE '/data/tools/out.csv'
FORMAT CSV
# 写法三:
cat out.csv|clickhouse-client -q "INSERT INTO git.com FORMAT CSV"

2.2 从本地sql文件导入

ddl语句将被跳过

INSERT INTO com
FROM INFILE '/data/tools/dump.sql' FORMAT MySQLDump

ps: 也可以直接通过文件读取数据,但是要注意读取文件的位置要在这个配置里面:user_files_path,不然会没有权限

 SELECT *
FROM file('dump.sql', MySQLDump)
LIMIT 5

2.3 二进制文件

详细内容可以在官网中查看

INSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' FORMAT Native

INSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT Native

INSERT INTO com
FROM INFILE '/data/tools/data.binary' FORMAT RowBinary

INSERT INTO com
FROM INFILE '/data/tools/data.msgpk' FORMAT MsgPack


ps: 导入之前可以用以下语句查看下文件内容,不过也有同样的限制,文件的位置要在user_files_path配置里

DESCRIBE file('data.clickhouse', Native);

三、导出

1.导出数据到s3

1.1 从s3中查询数据

SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_*.gz', 'TabSeparatedWithNames')
LIMIT 10;

SELECT  _path, _file, trip_id
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz', 'TabSeparatedWithNames')
LIMIT 5;

注意: 我们不需要列出列,因为 TabSeparatedWithNames 格式对第一行中的列名称进行编码。 其他格式(例如 CSV 或 TSV)将为此查询返回自动生成的列,例如 c1、c2、c3 等。
查询还支持虚拟列 _path 和 _file,它们分别提供有关存储桶路径和文件名的信息。

1.2 导出数据到s3

# 导出数据到s3的单个文件中
INSERT INTO FUNCTION
   s3(
       'https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips.csv.lz4',
       's3_key',
       's3_secret',
       'CSV'
    )
SELECT *
FROM trips
LIMIT 10000;
# 导出数据到s3的多个文件中
INSERT INTO FUNCTION
   s3(
       'https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips_{_partition_id}.csv.lz4',
       's3_key',
       's3_secret',
       'CSV'
    )
    PARTITION BY rand() % 10
SELECT *
FROM trips
LIMIT 100000;

ps: clickhouse还有更多和s3联动的高级方式,这里先不做说明,后续讲解

2.导出到本地

2.1其他文件

SELECT *
FROM com
INTO OUTFILE '/data/tools/out.csv'
FORMAT CSVWithNames

2.2 sql文件

涉及到的相关参数:文章来源地址https://www.toymoban.com/news/detail-661822.html

  • output_format_sql_insert_table_name: 指定导出表的名称,默认值为table
  • output_format_sql_insert_include_column_names:指定在插入查询中是否包含列,默认包含,设置为0则不包含
  • output_format_sql_insert_max_batch_size:一个insert语句中的最大行数,默认为65505
  • output_format_sql_insert_quote_names :是否用反引号包含字段
  • output_format_sql_insert_use_replace:使用replace语句而不是用insert语句,默认值为false
select * from commits limit 100 into outfile '/data/tools/dump.sql' truncate format SQLInsert;
SET output_format_sql_insert_table_name = 'out_table';
select * from table1 into outfile '/data/tools/dump.sql' [append|truncate] format SQLInsert;
# 可以看到/data/tools/dump.sql的文件内容如下,sql的名字变成了out_table
INSERT INTO out_table (`id`, `column1`) VALUES (1, 'abc');

2.3 二进制文件

SELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' FORMAT Native

SELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT Native

SELECT * FROM com
INTO OUTFILE '/data/tools/data.binary' FORMAT RowBinary

# 这里必须要用limit1,多导出的话文件格式就不对了,jpg图片无法正常打开
SELECT * FROM com limit 1
INTO OUTFILE '/data/tools/data.jpg'FORMAT RawBLOB

SELECT * FROM com
INTO OUTFILE '/data/tools/data.msgpk'FORMAT MsgPack

到了这里,关于clickhouse-数据导入导出方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s中clickhouse导出导入遇到的问题记录

    近期,在做k8s相关的项目时,涉及到了ck数据库的导入导出的问题。 一开始就想到采用导出数据到csv文件,再从csv文件导入的做法。所以,导出和导入的语句分别为: 导出: kubectl exec -it  ck_pod_name -n namespace --clickhouse-client --host=127.0.0.1 --port=9000 --user=username --password=password -

    2024年02月16日
    浏览(40)
  • Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案

    博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧

    2024年02月07日
    浏览(50)
  • Elasticsearch导入导出

    es数据的导入和导出需要借助于elasticdump工具,这是一个nodejs的插件(需要安装node.js环境),安装方式直接使用 npm即可,安装指令如下: 导出示例 说明: --type可以不要,默认就是data --limit=每次批量导出数据的条数 --searchBody=设置查询条件(必须是转义后的json) elasticsearch-d

    2024年02月11日
    浏览(22)
  • Elasticsearch之导入导出

    语法 示例 索引:es_index 导出文件:es_index.json 前提(安装ealsticdump) 方式一:需要安装node.js环境,下载ealsticdump 方式二:使用docker,下载ealsticdump 导出 语法 导出说明: 1、index_type没有自定义可以不要 2、--type可以不要,默认就是data 3、--limit=每次批量导出数据的条数 4、-s

    2024年02月11日
    浏览(26)
  • 数仓报表数据导出——Hive数据导出至Clickhouse

    创建database 创建table 使用 spark-sql 查询数据,然后通过 jdbc 写入Clickhouse。 创建Maven项目,pom.xml文件如下 创建HiveToClickhouse类 上传hive.xml,hdfs.xml 以及core-site.xml文件到项目的resource目录下 打包,并上传hive-to-clickhouse-1.0-SNAPSHOT-jar-with-dependencies.jar到hadoop节点 执行如下命令测试 为

    2024年02月16日
    浏览(29)
  • ClickHouse--10--临时表、视图、向表中导入导出数据

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ClickHouse 支持临时表,临时表具备以下特征: 当会话结束或者链接中断时, 临时表将随会话一起消失 。 临时表仅能够使用 Memory 表引擎,创建临时表时不需要指定表引擎。 无法为临时表指定数据库。它

    2024年02月20日
    浏览(27)
  • Python 连接clickhouse数据库以及新建表结构,csv导入数据

    目录 一、Python 连接clickhouse数据库 ◼ clickhouse对外的接口协议通常有两种形式: ◼ 代码实现部分: 二、使用客户端工具DBeaver连接clickhouse ◼ 新建clickhouse表 三、DBeaver 连接clickhouse 用csv文件导入数据 ◼ 导入方式: 方法一:使用DBeaver自带导入数据功能; 方法二:具体方式如

    2024年02月08日
    浏览(81)
  • Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据

            在使用postman调试接口时,若遇到内网的环境,无法通过账户同步数据; 在A电脑调试的接口数据,需要移动到B电脑上,如何实现postman 的数据迁移(导出)功能呢?         在新的电脑上,如何导入postman的数据呢?         本文将整理 postman的数据导出、

    2024年01月25日
    浏览(36)
  • 火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

    更多技术交流、求职机会,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群   作为企业数字化建设的必备要素,易用的数据引擎能帮助企业提升数据使用效率,更好提升数据应用价值,夯实数字化建设基础。 数据导入是衡量 OLAP 引擎性能及易用性的重要标

    2024年02月08日
    浏览(33)
  • 通过logstash(6.8.6)将es(6.8.6)数据导入clickhouse

    编写logstash数据转换的配置文件 export-csv.yml 需要根据es中数据和导出的原始数据格式对应的clickhouse中字段类型对数据的要求在filter中对数据的处理 启动logstash, -f 指定配置文件不使用logstash默认配置文件路径 ./logstash-6.8.6/bin/logstash -f test.yml clickhouse中创建表, 字段类型需要注

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包