更新时间:2026-11-03 GMT+08:00
分享

数据导入导出

数据导入导出是hwc-dws-cli的常用能力,支持将本地文件(CSV/JSON/Parquet)批量上传到DWS表、从DWS表或查询结果导出数据到本地文件,以及通过外表(OBS/HDFS)实现跨数据源导入导出。适用于数据初始化、批量迁移、数据采样等场景。

数据导入导出子命令说明如表1所示。

表1 数据导入导出子命令

子命令

说明

data upload --file <f> --table <t> [--schema] [--format csv\|json\|parquet]

上传数据文件到表。支持批量 INSERT 与 DWS COPY FROM STDIN(--copy,高吞吐)两种模式;多线程(--threads)与块大小(--block-size)调优。

data download --file <f> [--table \| --query] [--format csv\|json]

导出表数据或查询结果到 CSV / JSON 文件,支持行数 / 大小上限控制。

data show --table <t> [--limit N]

查看表样例数据。

data purge --table <t> [--schema]

清空表(TRUNCATE,需 --confirm-dangerous)。

data resume --task-id <id>

恢复暂停的数据传输会话(断点续传)。

data foreign create

创建外表(OBS / HDFS),自动生成 DISTRIBUTE BY,预校验 format×mode 约束。

data foreign import

从外表导入数据到本地表(INSERT INTO ... SELECT)

data foreign export

将本地表数据导出到外表。

上传模式说明:

  • 批量INSERT模式(默认): 逐行拼接INSERT语句提交,适合中小数据量。通过 --threads 指定并发线程数提升吞吐。
  • COPY高性能模式(--copy): 使用DWS原生COPY FROM STDIN协议,批量流式写入,吞吐量显著高于INSERT模式,适合大数据量导入。可通过 --copy-options 传递delimiter、null、encoding等COPY选项。
  • 断点续传: 大文件传输中断后,可使用 data resume --task-id <id> 恢复传输会话,避免从头重传。

# 上传(默认 csv,batch INSERT)
hwc-dws-cli data upload --file data.csv --table fact_sales --schema dwd  

# 上传(parquet 格式,多线程)
hwc-dws-cli data upload --file data.parquet --table fact_sales --format parquet --threads 8  

# 上传(COPY 高性能模式,自定义选项)
hwc-dws-cli data upload --file big.csv --table fact --copy --copy-options "delimiter=|,null=\\N" 

# 下载(按表 / 按查询)
hwc-dws-cli data download --table fact_sales --file out.csv 
hwc-dws-cli data download --query "SELECT * FROM fact_sales WHERE day='2026-10-01'" --file out.json --format json 
hwc-dws-cli data download --table fact_sales --file head.csv --max-record 1000 --max-size 10485760

DWS外表操作

# 创建外表(OBS,自动 DISTRIBUTE BY)
hwc-dws-cli data foreign create --table ext_sales --server obs_server \
  --type obs --columns "id:bigint,name:varchar(100),amt:numeric(10,2)" \
  --format csv --foldername "obs://bucket/data" --schema dwd

# 预览外表 DDL(不执行)
hwc-dws-cli data foreign create --table ext_sales --server obs_server --type obs \
  --columns "id:bigint" --format orc --foldername "obs://bucket/data" --dry-run

# 外表导入 / 导出
hwc-dws-cli data foreign import --foreign-table ext_sales --local-table fact_sales --schema dwd
hwc-dws-cli data foreign export --local-table fact_sales --foreign-table ext_sales --schema dwd

相关文档