写点什么

【YashanDB 知识库】手工迁移 Doris 数据到崖山分布式

作者:YashanDB
  • 2025-01-21
    广东
  • 本文字数:959 字

    阅读完需:约 3 分钟

本文内容来自 YashanDB 官网,原文内容请见https://www.yashandb.com/newsinfo/7253739.html?templateId=1718516


本方案采用 csv 文件格式进行数据的导出和导入。具体步骤如下:

通过 sql 语句将 Doris 表导出成 csv 文件

注:导出到本地文件时需要先在 fe.conf 中配置 enable_outfile_to_local=true 并重启 fe 节点

-- Doris默认查询超时时长为3600秒,此处改大,防止查询时间不够
set query_timeout = 36000;
-- 设置支持并发导出
set enable_parallel_outfile = true;
-- 导出条数默认限制为200条,需要改大
-- 因为崖山和Doris对null值处理的不同(Doris的null值导出为\N),Date和数字类型为null时需要转换(Date类型为null时需要转成空串,数字类型为null时需要转成0)
select nvl(user_id, 0), nvl(dt, ‘’), city, nvl(age, 0), nvl(sex, 0), nvl(last_visit_date, ‘’), nvl(cost, 0), nvl(max_dwell_time, 0), nvl(min_dwell_time, 0)
select nvl(user_id, 0), nvl(dt, ‘’), city, nvl(age, 0), nvl(sex, 0), nvl(last_visit_date, ‘’), nvl(cost, 0), nvl(max_dwell_time, 0), nvl(min_dwell_time, 0) from example_db.example_tbl_agg1 LIMIT 1000000000
INTO OUTFILE "file:///data/example_tbl_agg1/result_"
FORMAT AS CSV
PROPERTIES
(
"column_separator" = "|", -- 列分隔符改成|,防止数据中也存在默认的分隔符逗号
"line_delimiter" = "\n"
);
复制代码

在崖山分布式上创建表

CREATE TABLE IF NOT EXISTS example_db.example_tbl_agg1
(
user_id BIGINT NOT NULL,
dt DATE NOT NULL,
city VARCHAR(20),
age SMALLINT,
sex TINYINT,
last_visit_date DATE,
cost BIGINT,
max_dwell_time INT,
min_dwell_time INT
) order by(user_id) partition by hash(user_id) partitions auto;
复制代码


通过 yasldr 将 Doris 导出的 csv 文件导入到崖山分布式

yasldr example_db/example_db@127.0.0.1:1688 batch_size=4032 senders=9 control_text="'LOAD DATA OPTIONS(DEGREE_OF_PARALLELISM=16,ENABLE_BULK=TRUE) INFILE '/data/example_tbl_agg1/result_2ec7ec4eeae74a66-a094b4f43cd3a482_0.csv' WITH EMBEDDED FIELDS TERMINATED BY '|' INTO TABLE EXAMPLE_DB.EXAMPLE_TBL_AGG1(USER_ID,DT,CITY,AGE,SEX,LAST_VISIT_DATE,COST,MAX_DWELL_TIME,MIN_DWELL_TIME)'"
复制代码


发布于: 刚刚阅读数: 3
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】手工迁移Doris数据到崖山分布式_数据库_YashanDB_InfoQ写作社区