【dbt】dbt CLI ~ シード / dbt seed ~

◾️はじめに

https://dk521123.hatenablog.com/entry/2023/11/20/230946

で、dbtのSeed(シード)を扱ったが、
今回は、そのSeedのdbt CLIを扱う。
なお、公式ドキュメントは、オプションが見づらい気がする

目次

【1】dbt seed
【2】オプション
 1)--select
 2)--full-refresh

【1】dbt seed

* CSVをロードしDBに挿入
 =>  csv の内容を dbt model としてテーブル作成できる

https://docs.getdbt.com/reference/commands/seed

# seeds配下の全CSVをロードしてテーブル作成
$ dbt seed
02:27:44  Running with dbt=1.9.0
02:27:45  Registered adapter: postgres=1.9.0
02:27:45  Found 2 models, 4 data tests, 2 seeds, 429 macros
02:27:45  
02:27:45  Concurrency: 1 threads (target='dev')
02:27:45  
02:27:45  1 of 2 START seed file public.sample1 .......................................... [RUN]
02:27:45  1 of 2 OK loaded seed file public.sample1 ...................................... [INSERT 4 in 0.09s]
02:27:45  2 of 2 START seed file public.sample2 .......................................... [RUN]
02:27:45  2 of 2 OK loaded seed file public.sample2 ...................................... [INSERT 5 in 0.05s]
02:27:45  
02:27:45  Finished running 2 seeds in 0 hours 0 minutes and 0.40 seconds (0.40s).
02:27:45  
02:27:45  Completed successfully
02:27:45  
02:27:45  Done. PASS=2 WARN=0 ERROR=0 SKIP=0 TOTAL=2

【2】オプション

1)--select

* 特定Seedで実行する

https://docs.getdbt.com/reference/commands/seed

$ dbt seed --select sample2
02:28:44  Running with dbt=1.9.0
02:28:44  Registered adapter: postgres=1.9.0
02:28:45  Found 2 models, 4 data tests, 2 seeds, 429 macros
02:28:45  
02:28:45  Concurrency: 1 threads (target='dev')
02:28:45  
02:28:45  1 of 1 START seed file public.sample2 .......................................... [RUN]
02:28:45  1 of 1 OK loaded seed file public.sample2 ...................................... [INSERT 5 in 0.10s]
02:28:45  
02:28:45  Finished running 1 seed in 0 hours 0 minutes and 0.35 seconds (0.35s).
02:28:45  
02:28:45  Completed successfully
02:28:45  
02:28:45  Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1

2)--full-refresh

* 既存シードテーブルを一度削除してから再度テーブルを作成

https://docs.getdbt.com/reference/resource-configs/full_refresh

# "[CREATE 5..." って言ってるから作り直しているっぽい
$ dbt seed --select sample2 --full-refresh
02:35:07  Running with dbt=1.9.0
02:35:07  Registered adapter: postgres=1.9.0
02:35:08  Found 2 models, 4 data tests, 2 seeds, 429 macros
02:35:08  
02:35:08  Concurrency: 1 threads (target='dev')
02:35:08  
02:35:08  1 of 1 START seed file public.sample2 .......................................... [RUN]
02:35:08  1 of 1 OK loaded seed file public.sample2 ...................................... [CREATE 5 in 0.12s]
02:35:08  
02:35:08  Finished running 1 seed in 0 hours 0 minutes and 0.37 seconds (0.37s).
02:35:08  
02:35:08  Completed successfully
02:35:08  
02:35:08  Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1

使いどころ

* テーブルのデータ型を変えたい場合
* カラム定義が変わった場合
 => オプションをつけないと以下のようなエラーになる
~~~~
02:04:53    Database Error in seed sample2 (seeds/sample2.csv)
  column "remarks" of relation "sample2" does not exist
  LINE 2: ..."dbt_db"."public"."sample2" ("id", "name", "age", "remarks")...
~~~~

参考文献

https://qiita.com/n-gondo123/items/574da3fad45535b835a9

関連記事

dbt ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/30/000000
dbt ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/12/16/152147
dbt ~ 環境設定 / Docker 編 ~
https://dk521123.hatenablog.com/entry/2024/10/11/230419
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
dbt ~ 基本編 / Seed ~
https://dk521123.hatenablog.com/entry/2023/11/20/230946
dbt CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/07/21/234811
dbt CLI ~ ドキュメント化 / dbt docs ~
https://dk521123.hatenablog.com/entry/2023/12/10/125512
dbt CLI ~ テーブル一覧表示 / dbt list ~
https://dk521123.hatenablog.com/entry/2025/04/13/222612
dbt seed 実行後、エラー「Cross-db references not allowed in postgres」が発生
https://dk521123.hatenablog.com/entry/2025/05/23/215144
jq コマンド ~ JSON を扱う ~
https://dk521123.hatenablog.com/entry/2020/02/01/000000