motherduck-load-data について
ファイル、オブジェクトストレージ、メモリ上の行データ、外部データベースからMotherDuckへデータを取り込むスキルです。取り込み方法の選択、最小限の変換での格納、結果の検証を支援します。
主な機能
- 01ソースを分類して取り込み方法を選択
- 02ファイル、データベース、メモリ上の行を取り込み
- 03バッチおよび一括転送を優先
- 04行数、型、集計結果を検証
活用シーン
- 01オブジェクトストレージからParquetファイルをロード
- 02ローカルDuckDBデータベースをインポート
- 03外部ソースのデータを追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ motherduckdb/ agent-skills --skill motherduck-load-dataインストール後、Claude Code で/motherduck-load-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/INGESTION_PATTERNS.md
詳細
MotherDuck にデータをロードする
情報源
- まず、MotherDuck の最新のデータロード、クラウドストレージ、Postgres エンドポイント経由のデータロードに関するドキュメントを優先してください。
- 保護されたオブジェクトストレージを使用するワークフローでは、
CREATE SECRETとクラウドストレージのドキュメントを使用してください。 - ソースが既存のローカル
.duckdb、.ddb、またはアタッチ済みの DuckDB データベースの場合は、DuckDB データベースのアップロードに関するドキュメントを使用してください。 - データロードに関するアドバイスは、MotherDuck が文書化している方針に沿わせてください。
- ストリーミングよりバッチ処理を優先する
- 形式を制御できる場合は、CSV より Parquet を優先する
- 1 行ずつの挿入より、データフレーム、
COPY、CTAS、またはINSERT ... SELECTを優先する - DuckLake が明示的に必要でない限り、ネイティブの MotherDuck ストレージを優先する
デフォルト方針
- まず、ソースをオブジェクトストレージまたは HTTPS、ローカルファイルまたはローカル DuckDB、メモリ内の行、外部データベースに分類してください。
- 初回ロードには
CREATE TABLE AS SELECT、追加にはINSERT INTO ... SELECTを優先してください。 - DuckDB データベース全体を対象とする場合は、
CREATE OR REPLACE DATABASE remote_name FROM CURRENT_DATABASE()、アタッチ済みのローカルデータベース、ネイティブクライアントからのローカルファイルパス、または S3 などのリモート.duckdbファイル URL を使用してください。リモートファイルとローカルファイルのインポートではデータが物理的に MotherDuck にコピーされますが、データベースや共有のクローンソースではゼロコピーです。 - ソース形式を制御できる場合、永続的な一括転送には Parquet を使用してください。
- Postgres エンドポイントは、サーバー側でリモート読み取りを行うためのシンクライアント経路として扱い、ローカルファイルや拡張機能を使用したデータ取り込みには使用しないでください。
- データ取り込みツールがターゲットデータベースを自動作成しない場合は、まず MotherDuck にターゲットデータベースを作成してください。
- raw のランディングデータには最低限の変換のみを適用し、型変換、重複排除、ビジネスロジックはステージングまたはモデリングの工程で処理してください。
- 配置を制御できる場合は、ソースストレージを MotherDuck のリージョンに近づけてください。
ワークフロー
- ソースデータが実際にどこにあるかを特定します。
- データロード経路を選択します。
- オブジェクトストレージまたは HTTPS:MotherDuck にリモート読み取りする
- ローカルファイルまたはローカル DuckDB:DuckDB クライアント経路を使用する
- リモート DuckDB データベースファイル:必要なクラウドシークレットを使って
CREATE DATABASE ... FROM '<cloud-url>'を使用する - メモリ内の行:まず Arrow またはデータフレームによる一括ロードを行い、バッチ挿入は代替手段としてのみ使用する
- 外部データベース:DuckDB を利用できる環境から、適切なスキャンまたはレプリケーション経路を使用する
- 最小限の変換で、raw テーブルまたはステージングテーブルにデータを格納します。
- ロード直後に、行数、型、いくつかのビジネス集計値を検証します。
- 依頼に変換が含まれる場合にのみ、モデリング済みテーブルへ昇格します。宛先データの検証が完了すれば、ロード依頼は完了です。
回答、レビュー、または計画の依頼では、データを変更せずにデータロード経路を提案してください。ロードまたは実装の依頼では、対象範囲内で依頼された書き込みと検証を実行し、破壊的な置換や、より広範な外部書き込みを行う前に確認してください。
参考資料
現在のタスクに必要な参考セクションのみを参照してください。
- 形式別のオプション、クラウドストレージのシークレット、Postgres エンドポイント経由のデータロードにおけるトレードオフ、Python データフレーム経路、高度なデータ取り込みパターンについては、
references/INGESTION_PATTERNS.mdを参照してください。
関連スキル
不足している機能を補う場合にのみ関連スキルを読み込み、既存のコンテキストを再利用してください。
- Postgres エンドポイントと DuckDB クライアント経路のどちらを選ぶか判断するには、
motherduck-connectを使用する - 宛先データベースの調査や、格納したテーブルの検証には、
motherduck-exploreを使用する - CTAS、追加、検証用の SQL を作成するには、
motherduck-queryを使用する - 格納したデータをステージングテーブルや分析テーブルへ昇格するには、
motherduck-model-dataを使用する - オブジェクトストレージを基盤とするレイクハウスストレージが明示的に必要な場合に限り、
motherduck-ducklakeを使用する - シェルベースのロードで構造化出力をファイルにストリーミングする場合は、
motherduck-cliを使用する
コメント
Markdown 対応