A SQL parser library with WASM and TypeScript bindings
npm install @casual-simulation/sql-parsersqlparser Rust crate to parse and manipulate SQL statements.
js
import { init, parse } from '@casual-simulation/sql-parser'
await init();
const ast = parse('SELECT * FROM "users";');
`
Supported Dialects
- generic - Generic SQL dialect
- postgresql / postgres - PostgreSQL
- mysql - MySQL
- sqlite - SQLite
- mssql / sqlserver - Microsoft SQL Server
- snowflake - Snowflake
- redshift - Amazon Redshift
- bigquery - Google BigQuery
- clickhouse - ClickHouse
- hive - Apache Hive
API
$3
Initializes the library WASM module.
$3
Parses a SQL statement using the specified dialect and returns the AST as a pretty-printed JSON string.
Parameters:
- sql - The SQL statement(s) to parse
- dialect - The SQL dialect to use for parsing
Returns:
- Statement[] - The parsed statements
- Error - Throws an error if parsing failed.
$3
Formats the given statement into a SQL string.
Parameters:
- statement - The SQL statement for format.
$3
A class that is able to walk over a SQL tree and call the given functions for each kind of statement.
#### visit(statement: Statement)
Runs the visitor on the given statement.
Examples
$3
`js
let result = parse("SELECT * FROM users", "postgresql");
// Returns JSON representation of the SELECT statement AST
`
$3
`js
let sql =
;
let result = parse(sql, "mysql");
// Returns detailed JSON AST including joins, aggregations, etc.
`
Building
`bash
Build the library
pnpm build
`
Testing
`bash
pnpm test
`
Contributing
1. Fork the repository
2. Create your feature branch (git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)