This example demonstrates how to use filesql with sqlc, a type-safe SQL code generator.
sqlc generates type-safe Go code from SQL queries. It compiles SQL queries to Go code, providing:
- Type-safe database access
- No runtime reflection
- Compile-time query validation
- IDE autocompletion support
sqlc/
├── main.go # Application code
├── sqlc.yaml # sqlc configuration
├── schema.sql # Table schema definition
├── query.sql # SQL queries for code generation
├── users.csv # Sample data
└── db/ # Generated code by sqlc
├── db.go
├── models.go
└── query.sql.go
- Define schema (
schema.sql): Describe your table structure that matches your CSV columns - Write queries (
query.sql): Write SQL queries with sqlc annotations - Generate code: Run
sqlc generateto create type-safe Go code - Use with filesql: Pass
*sql.DBfrom filesql to sqlc'sNew()function
cd examples/sqlc
go run main.goIf you modify the schema or queries:
# Install sqlc if not already installed
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
# Generate code
sqlc generate- The CSV column names must match the schema definition
- filesql returns a standard
*sql.DB, which is fully compatible with sqlc - You get type-safe queries on CSV data!
=== All Users ===
ID: 1, Name: Alice, Email: alice@example.com, Age: 28
ID: 2, Name: Bob, Email: bob@example.com, Age: 35
ID: 3, Name: Charlie, Email: charlie@example.com, Age: 22
ID: 4, Name: Diana, Email: diana@example.com, Age: 31
ID: 5, Name: Eve, Email: eve@example.com, Age: 27
=== Get User (ID=1) ===
Found: Alice <alice@example.com>
=== Users Age >= 30 ===
Diana (age 31)
Bob (age 35)
=== Statistics ===
Total users: 5
Average age: 28.6