A CLI/Maven plugin that reads YAML configuration files and generates SQL insert/update statements from datafiles.
Similar in concept to Swagger/OpenAPI generation of service artifact generation, but generates SQL.
- reads a YAML configuration file,
- Validates the file against a JSON schema
- Reads JSON/YAML/CSV datafiles
- generates SQL insert/update statements from data
Operations in the plugin are tied to appropriate Maven lifecycle events.
- ✅ Integration with Maven lifecycle
- ✅ Comprehensive unit tests
- ✅ CI/CD with GitHub Actions
- ✅ Supports JSON/YAML/CSV datafiles
- ✅ Supports multiple datafiles per table
- ✅ Upsert SQL generation
- ✅ Datafile validation against schema
- ✅ Validate/Generate/Record Count
- Natural and Surrogate keys
- Foreign Keys
- Column Defaults
- On conflict strategies
- Column values derived from generators
knoppen validate schemas/blog.yaml knoppen generate schemas/blog.yaml --no-strict --root-data-path /tmp/data --root-output-path /tmp --output-format LEGACYAdd to your pom.xml:
<build>
<plugins>
<plugin>
<groupId>com.austindroids</groupId>
<artifactId>knoppen-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<configFile>${project.basedir}/src/main/resources/bootstrap-config.yaml</configFile>
<dialect>postgres</dialect>
<validateOnly>false</validateOnly>
<transactionMode>single|per-table|none</transactionMode>
<includeDropStatements>false</includeDropStatements>
<encoding>UTF-8</encoding>
<failOnValidationError>true</failOnValidationError>
<outputFileName>seed.sql</outputFileName>
<foreignKeyValidation>true</foreignKeyValidation>
<sequencePrefix>seq_</sequencePrefix>
</configuration>
</plugin>
</plugins>
</build>