07 · Tables A→ZF · Load data
First-load checklist
A pre-flight for loading data cleanly the first time - types, encoding, headers, nulls, domains.
A quick checklist to get the first load right, so you're not cleaning up afterward.
Before you load
- Inferred the schema - ran
infer_schemaand reviewed types and domain candidates. - IDs are
Utf8- preserves leading zeros (007stays007). - Money is
Decimal(e.g.Decimal(20,4)) - exact, unlikeFloat32/Float64. - Dates typed -
Date32/Timestamp, not left asUtf8. - Primary key chosen -
primary_key_columnexists in the data and is unique. - Non-nullable columns listed - the ones that must always have a value.
- Domains set first - for closed value sets, configure domains before loading so bad values are rejected on write.
File gotchas
- Encoding - UTF-8. Watch for BOMs and smart quotes from spreadsheets.
- Header row present and matching your intended column names (case-sensitive).
- Delimiter - auto-detected (
,;\t|); set explicitly only if detection fails. - Empty strings ≠ NULL - decide which you mean and set nullability accordingly.
- Size -
csv_contentover MCP has a ~5MB limit; for bigger files, load in batches or use the CLIinsert/mergewith a file.
After you load
-
profile_table- row count and null distribution look right. -
validate_constraints+validate_domain_values- zero violations. -
get_table_history- the load shows the expected row metrics.
Good to know
If an import fails mid-way (type conflict, duplicate PKs),
the table isn't created - fix the data and retry. Nothing half-lands.