对于 Doris 来说,一个 INSERT 命令就是一个完整的导入事务。
因此不论是导入一条数据,还是多条数据,我们都不建议在生产环境使用这种方式进行数据导入。高频次的 INSERT 操作会导致在存储层产生大量的小文件,会严重影响系统性能。
该方式仅用于线下简单测试或低频少量的操作。
* INSERT INTO table SELECT ... * INSERT INTO table VALUES(...)
导入本地数据
建表:
drop table if exists load_local_file_test;
CREATE TABLE IF NOT EXISTS load_local_file_test
(
id INT,
name VARCHAR(50),
age TINYINT
)
unique key(id)
DISTRIBUTED BY HASH(id) BUCKETS 3;
导入测试数据:
1,zss,28
2,lss,28
3,ww,88
执行 curl 命令导入本地文件:
# 语法示例
curl \
-u user:passwd \ # 账号密码
-H "label:load_local_file_test" \ # 本次任务的唯一标识
-T 文件地址 \
http://主机名:端口号/api/库名/表名/_stream_load
curl \
-u root:123456 \
-H "label:load_local_file" \
-H "column_separator:," \
-T /opt/data/loadfile.txt \
http://hadoop11:8040/api/test/load_local_file_test/_stream_load
导入成功:
外部存储数据导入(hdfs)
建表
drop table if exists load_local_file_test;
CREATE TABLE IF NOT EXISTS load_local_file_test
(
id INT,
name VARCHAR(50),
age TINYINT
)
unique key(id)
DISTRIBUTED BY HASH(id) BUCKETS 3
PROPERTIES
(
"replication_num" = "1"
);
将本地的数据导入到hdfs上面
hdfs dfs -put loadfile.txt /
导入格式:
语法示例:
LOAD LABEL test.label_202204(
[MERGE|APPEND|DELETE] -- 不写就是append
DATA INFILE
(
"file_path1"[, file_path2, ...] -- 描述数据的路径 这边可以写多个 ,以逗号分割
)
[NEGATIVE] -- 负增长
INTO TABLE `table_name` -- 导入的表名字
[PARTITION (p1, p2, ...)] -- 导入到哪些分区,不符合这些分区的就会被过滤掉
[COLUMNS TERMINATED BY "column_separator"] -- 指定分隔符
[FORMAT AS "file_type"] -- 指定存储的文件类型
[(column_list)] -- 指定导入哪些列
[COLUMNS FROM PATH AS (c1, c2, ...)] -- 从路劲中抽取的部分列
[SET (column_mapping)] -- 对于列可以做一些映射,写一些函数
-- 这个参数要写在要写在set的后面
[PRECEDING FILTER predicate] -- 在mapping前做过滤做一些过滤
[WHERE predicate] -- 在mapping后做一些过滤 比如id>10
[DELETE ON expr] --根据字段去做一些抵消消除的策略 需要配合MERGE
[ORDER BY source_sequence] -- 导入数据的时候保证数据顺序
[PROPERTIES ("key1"="value1", ...)] -- 一些配置参数
将hdfs上的数据load到表中
LOAD LABEL test.label_20221125
(
DATA INFILE("hdfs://hadoop12:8020/loadfile.txt")
INTO TABLE `load_hdfs_file_test`
COLUMNS TERMINATED BY ","
(id,name,age)
)
with HDFS (
"fs.defaultFS"="hdfs://hadoop12:8020",
"hadoop.username"="root"
)
PROPERTIES
(
"timeout"="1200",
"max_filter_ratio"="0.1"
);
查看表: