三亚网站制作,做好网站买了空间域名,搭建个人主页,成都展览展示有限公司一、简介
clickhouse有多种数据的导入导出方式#xff0c;可以灵活使用#xff0c;下面对这些方式分别做些介绍#xff0c;导入导出的写法与格式和格式设置有关。
二、导入
1.从s3导入
详情可查看官网#xff0c;也可以在这里获取数据集
-- 建库建表
CREATE DATABASE …一、简介
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 CSV2.2 从本地sql文件导入
ddl语句将被跳过
INSERT INTO com
FROM INFILE /data/tools/dump.sql FORMAT MySQLDumpps: 也可以直接通过文件读取数据,但是要注意读取文件的位置要在这个配置里面user_files_path不然会没有权限 SELECT *
FROM file(dump.sql, MySQLDump)
LIMIT 52.3 二进制文件
详细内容可以在官网中查看
INSERT INTO com
FROM INFILE /data/tools/data.clickhouse FORMAT NativeINSERT INTO com
FROM INFILE /data/tools/data.clickhouse COMPRESSION lz4 FORMAT NativeINSERT INTO com
FROM INFILE /data/tools/data.binary FORMAT RowBinaryINSERT 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 FUNCTIONs3(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 FUNCTIONs3(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 CSVWithNames2.2 sql文件
涉及到的相关参数
output_format_sql_insert_table_name 指定导出表的名称默认值为tableoutput_format_sql_insert_include_column_names指定在插入查询中是否包含列默认包含设置为0则不包含output_format_sql_insert_max_batch_size一个insert语句中的最大行数默认为65505output_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 NativeSELECT * FROM com
INTO OUTFILE /data/tools/data.clickhouse COMPRESSION lz4 FORMAT NativeSELECT * FROM com
INTO OUTFILE /data/tools/data.binary FORMAT RowBinary# 这里必须要用limit1,多导出的话文件格式就不对了jpg图片无法正常打开
SELECT * FROM com limit 1
INTO OUTFILE /data/tools/data.jpgFORMAT RawBLOBSELECT * FROM com
INTO OUTFILE /data/tools/data.msgpkFORMAT MsgPack