You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DuckDB中导出/导入指定表子集(含配套SQL文件)

DuckDB 导出指定表子集并生成schema/load脚本的方案

如果全量导出没问题,但只想导出部分表,同时要生成规整的schema.sql和load.sql,可以按以下步骤来:

1. 导出指定表的结构到schema.sql

用DuckDB自带的DUMP命令,加上--schema参数就能只导出表结构,还能指定表名:

-- 切换输出到schema.sql
.output schema.sql
-- 导出table_a和table_b的表结构
.dump --schema table_a table_b
-- 切回标准输出
.output stdout

2. 导出指定表的数据

用COPY命令导出每个表的数据,推荐用Parquet格式(性能好、体积小),也可以用CSV:

-- Parquet格式导出
COPY table_a TO 'data/table_a.parquet';
COPY table_b TO 'data/table_b.parquet';

-- 或者CSV格式(带表头)
COPY table_a TO 'data/table_a.csv' (FORMAT CSV, HEADER);
COPY table_b TO 'data/table_b.csv' (FORMAT CSV, HEADER);

3. 自动生成load.sql导入脚本

不用手动写,直接用查询生成导入语句:

-- 切换输出到load.sql
.output load.sql
-- 生成Parquet格式的导入语句
SELECT 'COPY ' || table_name || ' FROM ''data/' || table_name || '.parquet'';'
FROM information_schema.tables
WHERE table_name IN ('table_a', 'table_b');

-- 如果是CSV格式,用下面的语句替换
-- SELECT 'COPY ' || table_name || ' FROM ''data/' || table_name || '.csv'' (FORMAT CSV, HEADER);'
-- FROM information_schema.tables
-- WHERE table_name IN ('table_a', 'table_b');

-- 切回标准输出
.output stdout

4. 导入流程

先建表结构:

duckdb target_db.db < schema.sql

再导入数据:

duckdb target_db.db < load.sql

这样操作后,就和全量导出的schema.sql/load.sql用法完全一致,满足部分表导出的需求。

内容的提问来源于stack exchange,提问作者misantroop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:46:04