Doris 导入导出Mysql表数据

使用EXPORT命令导出csv格式的 Doris 中存储的数据。

使用 Stream Load 进行导入。Stream Load 可以保证一批导入任务的原子性,要么全部导入成功,要么全部导入失败。

一、表数据导出

1.注意事项

export 数据导出到本地文件系统,需要在 fe.conf 中添加enable_outfile_to_local=true并且重启 FE。

导出的路径为be节点下的文件夹,提前创建好,否则会报路径找不到!!!

2.导出代码如下

通过mysql客户端执行

# 按分区导出test 表到 绝对路径下
EXPORT TABLE test TO "file:///home/back/export-data-"
PROPERTIES(
    "parallelism" = "5",
    "format" = "csv",
    "column_separator"=",",
    "data_consistency" = "partition",
    "max_file_size" = "1024MB"
);

3.批量修改格式

ssh 连接be节点。进入/home/back文件夹下。

此时导出的文件没有文件后缀,通过Stream Load 导入会报错。必须添加.csv 的文件后缀

vim renameFiles.sh


#!/bin/bash
# 批量修改文件
path="/home/back"
cd $path
 
for file in *
do  
  new_file="${file}.csv"
  mv "$file" "$new_file"
  
# 检查是否成功
  if [ $? -eq 0 ]; then
    echo "文件重命名成功: $file -> $new_file"
  else
    echo "文件重命名失败"
  fi

done



./renameFiles.sh

二、导入

1.导入单个csv 文件

通过 curl 命令可以提交 Stream Load 导入作业。

curl -v --http0.9 --location-trusted 
-u 用户名:密码   
-H "Expect:100-continue" 
-H "column_separator:," 
-T 你的csvs文件.csv  
-XPUT http://<fe_ip>:<fe_http_port>/api/导入的数据库名/导入的表明/_stream_load

注意 导入的端口是fe的http_port   默认为8030

导入成功截图

红框内显示导入结果 sucess 和 导入的数据条数

2.批量导入

shell 脚本如下,注意每个be节点下的文件都要导入。

vim importBatchCsv.sh


#!/bin/bash
path="/home/back"
cd $path
a=0
for var in $(ls *.csv)
do
  let a++
  curl -v --http0.9 --location-trusted -u 用户名:密码   -H "Expect:100-continue"  -H "column_separator:," -T $var -XPUT http://FE节点的ip:8030/api/你的的库名/需要导入的表名/_stream_load
  echo "这是第"$a"次数据导入"
done


三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了doris csv文件的导入导出,引用官网的原话

Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、湖仓一体等使用场景,用户可以在此之上构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐