用途
该技能用于把数据加载到 MotherDuck。它针对不同来源提供批量摄取路径建议,包括文件、对象存储、数据框以及外部数据库。其核心目标是在确保与 MotherDuck 当前官方文档一致的前提下,选择恰当的加载方式。
主要能力
- 识别数据来源类型:对象存储或 HTTPS、本地文件或本地 DuckDB、内存行以及外部数据库。
- 根据不同来源选择加载路径:
- 对象存储或 HTTPS:远程读取到 MotherDuck。
- 本地文件或本地 DuckDB:使用 DuckDB 客户端路径。
- 远程 DuckDB 数据库文件:使用
CREATE DATABASE ... FROM '<cloud-url>'并配合所需的云密钥。 - 内存行:优先使用 Arrow 或数据框批量加载,批量插入作为回退方案。
- 外部数据库:从具备 DuckDB 能力的环境中使用适当的扫描或复制路径。
- 推荐首次加载使用
CREATE TABLE AS SELECT,追加使用INSERT INTO ... SELECT。 - 针对整个 DuckDB 数据库,支持
CREATE OR REPLACE DATABASE remote_name FROM CURRENT_DATABASE()、附加本地数据库、本地文件路径或远程.duckdb文件 URL。远程和本地文件导入会物理复制数据到 MotherDuck;数据库或共享克隆源为零拷贝。 - 在可控源格式时推荐使用 Parquet 进行持久批量移动。
- 将 Postgres 端点视为瘦客户端路径,用于服务端远程读取,而非本地文件或扩展驱动的摄取。
- 在摄取工具不会自动创建目标数据库时,先引导创建目标 MotherDuck 数据库。
- 保持原始落地数据最小化转换,在暂存或建模步骤中进行类型化、去重和业务逻辑处理。
- 在可控放置时,保持源存储靠近 MotherDuck 区域。
使用方式
- 确认源数据的实际位置。
- 选择加载路径:
- 对象存储或 HTTPS:远程读取进入 MotherDuck。
- 本地文件或本地 DuckDB:使用 DuckDB 客户端路径。
- 远程 DuckDB 数据库文件:使用带云密钥的
CREATE DATABASE ... FROM '<cloud-url>'。 - 内存行:优先 Arrow 或数据框批量加载,仅将批量插入作为回退。
- 外部数据库:从 DuckDB 环境使用适当的扫描或复制路径。
- 将数据落地到原始或暂存表,最小化转换。
- 加载后立即校验行数、类型和少量业务聚合。
- 仅在请求包含转换时,才将数据提升到建模表;加载请求在目标数据校验完成后即视为完成。
对于回答、审查或规划请求,推荐加载路径而不改动数据。对于加载或实现请求,执行范围内所请求的写入和校验;在破坏性替换或更广泛的外部写入前先询问。
适用场景
适用于需要将数据从多种来源(如对象存储、本地文件、内存数据框、外部数据库)批量导入 MotherDuck 的场景。无论是首次加载还是追加数据,该技能都提供与 MotherDuck 文档一致的加载建议。
限制
应优先参考当前 MotherDuck 官方加载、云存储和 Postgres 端点加载文档。受保护对象存储工作流应使用 CREATE SECRET 和云存储文档。当源是现有本地 .duckdb、.ddb 或附加的 DuckDB 数据库时,参考 DuckDB 数据库上传文档。该技能仅提供加载路径指导与执行建议,不编造功能、收费、价格、平台或效果。
参考资料
仅阅读当前任务所需的参考章节。读取 references/INGESTION_PATTERNS.md 获取格式特定选项、云存储密钥、Postgres 端点加载权衡、Python 数据框路径和高级摄取模式。
相关技能
仅在缺少能力时加载相关技能;复用已有上下文。相关技能包括:motherduck-connect(在 Postgres 端点与 DuckDB 客户端路径之间选择)、motherduck-explore(检查目标数据库并校验落地表)、motherduck-query(编写 CTAS、追加和校验 SQL)、motherduck-model-data(将落地数据提升到暂存和分析表)、motherduck-ducklake(仅在明确要求对象存储支持的湖仓存储时使用)、motherduck-cli(当基于 shell 的加载应将结构化输出流式写入文件时使用)。