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