Development
Prerequisites
Section titled “Prerequisites”- Rust 1.70+ (rustup.rs)
- Git
Clone and Build
Section titled “Clone and Build”git clone https://github.com/helgesverre/sql-splittercd sql-splittercargo buildRun Development Build
Section titled “Run Development Build”cargo run -- split test.sql -o output/Build Release
Section titled “Build Release”cargo build --releaseThe binary will be at target/release/sql-splitter.
Optimized Build
Section titled “Optimized Build”RUSTFLAGS="-C target-cpu=native" cargo build --releaseProject Structure
Section titled “Project Structure”Directorysql-splitter/
Directorysrc/
- main.rs Entry point
Directorycmd/ CLI commands
- split.rs
- merge.rs
- analyze.rs
- …
Directoryparser/ SQL parser
- …
Directorysplitter/ Split logic
- …
Directorymerger/ Merge logic
- …
Directoryanalyzer/ Analysis logic
- …
Directoryconvert/ Dialect conversion
- …
Directoryvalidate/ Validation logic
- …
Directorysample/ Sampling logic
- …
Directoryshard/ Sharding logic
- …
Directorydiffer/ Diff logic
- …
Directoryredactor/ Redaction logic
- …
Directorygraph/ Graph/ERD logic
- …
Directoryduckdb/ DuckDB integration
- …
Directorywriter/ Output writers
- …
Directorytests/
Directoryfixtures/ Test SQL files
- …
- *.rs Test modules
Directoryman/ Man pages
- …
Directorywebsite/ Documentation site
- …
- Cargo.toml
Code Style
Section titled “Code Style”- Use
cargo fmtbefore committing - Run
cargo clippyfor lints - Follow Rust idioms
Make Commands
Section titled “Make Commands”make build # Build releasemake test # Run testsmake install # Install binary + completions + man pagesmake clean # Clean build artifacts