Loading CSV seeds lets you add small, fixed data files into your database easily. This helps you use simple data for testing or reference without writing complex code.
You want to add a list of countries or states to your project.
You need a small lookup table like product categories.
You want to test your models with fixed sample data.
You have static data that rarely changes but is needed in your analysis.
Syntax
dbt
1. Place your CSV file inside the 'seeds' folder in your dbt project.
2. Run the command: dbt seed
3. The CSV data will load into your database as a table with the same name as the CSV file.
The CSV file name becomes the table name in your database.
You can configure seed options like delimiter or header in the dbt_project.yml file.
Examples
This loads the 'countries.csv' file as a table named 'countries' in your database.
dbt
# Place 'countries.csv' inside the 'seeds' folder# Run in terminal:
dbt seed
This configures the seed to expect a header row and comma delimiter.
This example loads a small fruits list into your database. After running dbt seed, you can query the 'fruits' table to see the data.
dbt
# Step 1: Create a CSV file named 'fruits.csv' inside the 'seeds' folder with this content:# name,color# apple,red# banana,yellow# grape,purple# Step 2: Run the seed command in terminal:
dbt seed
# Step 3: Query the loaded table in your dbt model or database:
select * from fruits;
OutputSuccess
Important Notes
Seeds are best for small, static datasets.
Running dbt seed overwrites the existing seed tables.
You can use seeds to simplify testing and prototyping.
Summary
Seeds load CSV files as tables in your database.
Place CSVs in the 'seeds' folder and run dbt seed.
Use seeds for small, fixed reference data.
Practice
(1/5)
1. What is the main purpose of loading CSV seeds in dbt?
easy
A. To load small, fixed reference data as tables in the database
B. To run complex SQL transformations on large datasets
C. To create temporary views for data exploration
D. To export data from the database to CSV files
Solution
Step 1: Understand the role of seeds in dbt
Seeds are used to load CSV files as tables in the database, mainly for small, fixed reference data.
Step 2: Compare options with seed purpose
Options B, C, and D describe other dbt or database functions, not seed loading.
Final Answer:
To load small, fixed reference data as tables in the database -> Option A
Quick Check:
Seeds = small fixed reference data [OK]
Hint: Seeds load small fixed data as tables [OK]
Common Mistakes:
Thinking seeds are for large datasets
Confusing seeds with models or views
Assuming seeds export data instead of loading
2. Which folder should you place your CSV files in to load them as seeds in dbt?
easy
A. data
B. models
C. macros
D. snapshots
Solution
Step 1: Recall the folder structure for dbt seeds
CSV files for seeds must be placed in the 'data' folder inside the dbt project.
Step 2: Eliminate other folders
'models' is for SQL models, 'macros' for reusable code, 'snapshots' for snapshot data, so they are incorrect for seeds.
Final Answer:
data -> Option A
Quick Check:
Seeds folder = data [OK]
Hint: Put CSVs in 'data' folder for seeds [OK]
Common Mistakes:
Placing CSVs in 'models' folder
Confusing 'macros' with data storage
Using 'snapshots' folder for seeds
3. Given the following dbt command run in a project with a CSV file named countries.csv in the data folder, what will happen?
dbt seed
medium
A. Nothing will happen unless you specify the table name
B. The CSV file will be deleted from the data folder
C. The CSV file will be loaded as a table named 'countries' in the database
D. The CSV file will be converted to a model SQL file
Solution
Step 1: Understand the effect of dbt seed
This command loads all CSV files in the 'data' folder as tables in the database, using the CSV filename as the table name.
Step 2: Apply to the given CSV file
The file 'countries.csv' will be loaded as a table named 'countries'. No extra arguments are needed.
Final Answer:
The CSV file will be loaded as a table named 'countries' in the database -> Option C
Quick Check:
dbt seed loads CSVs as tables named after files [OK]
Hint: dbt seed loads CSVs as tables named by file [OK]
Common Mistakes:
Thinking dbt seed deletes files
Expecting dbt seed to convert CSV to SQL
Believing table name must be specified manually
4. You ran dbt seed but the table did not appear in your database. Which of the following is the most likely cause?
medium
A. The CSV file is empty
B. The CSV file has a .txt extension instead of .csv
C. You forgot to run dbt run after dbt seed
D. The CSV file is not placed inside the 'data' folder
Solution
Step 1: Check the seed loading requirements
dbt only loads CSV files placed inside the 'data' folder when running dbt seed.
Step 2: Analyze the options
If the CSV is outside 'data', dbt seed ignores it. A .txt file won't be loaded. Running dbt run is unrelated to seeds. An empty CSV still creates an empty table.
Final Answer:
The CSV file is not placed inside the 'data' folder -> Option D
Quick Check:
CSV must be in 'data' folder for seed [OK]
Hint: CSV must be in 'data' folder to load [OK]
Common Mistakes:
Assuming dbt run loads seeds
Ignoring file extension importance
Thinking empty CSV prevents table creation
5. You have a CSV file products.csv with columns id, name, and price. You want to load it as a seed and then create a model that selects only products with price > 100. Which steps should you follow?
hard
A. Place products.csv in 'data', run dbt run, then create a model filtering price > 100
B. Place products.csv in 'data', run dbt seed, then create a model SQL selecting from the seed table filtering price > 100
C. Place products.csv in 'models', run dbt run, then filter price in the CSV file
D. Place products.csv in 'snapshots', run dbt seed, then create a model selecting all products
Solution
Step 1: Load CSV as seed
Place the CSV in the 'data' folder and run dbt seed to load it as a table.
Step 2: Create a model filtering data
Create a model SQL file that selects from the seed table and filters products where price > 100.
Step 3: Understand why other options fail
Place products.csv in 'models', run dbt run, then filter price in the CSV file places CSV in wrong folder and filters CSV manually. Place products.csv in 'data', run dbt run, then create a model filtering price > 100 misses running dbt seed. Place products.csv in 'snapshots', run dbt seed, then create a model selecting all products uses wrong folder and does not filter.
Final Answer:
Place products.csv in 'data', run dbt seed, then create a model SQL selecting from the seed table filtering price > 100 -> Option B
Quick Check:
Seed CSV in 'data' + dbt seed + model filter = correct [OK]
Hint: Seed CSV in 'data', run dbt seed, then model filter [OK]
Common Mistakes:
Placing CSV in wrong folder
Skipping dbt seed command
Filtering data outside SQL model
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.