@casual-simulation/sql-parser
v0.1.0
Published
A SQL parser library with WASM and TypeScript bindings
Readme
SQL Parser
A JavaScript library that uses the sqlparser Rust crate to parse and manipulate SQL statements.
Features
- Parse SQL statements using various SQL dialects
- Support for 10+ SQL dialects including PostgreSQL, MySQL, SQLite, BigQuery, and more
Usage
import { init, parse } from '@casual-simulation/sql-parser'
await init();
const ast = parse('SELECT * FROM "users";');Supported Dialects
generic- Generic SQL dialectpostgresql/postgres- PostgreSQLmysql- MySQLsqlite- SQLitemssql/sqlserver- Microsoft SQL Serversnowflake- Snowflakeredshift- Amazon Redshiftbigquery- Google BigQueryclickhouse- ClickHousehive- Apache Hive
API
init(): Promise<void>
Initializes the library WASM module.
parse(sql: string, dialect: string = 'generic'): Statement[]
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 parsedialect- The SQL dialect to use for parsing
Returns:
Statement[]- The parsed statementsError- Throws an error if parsing failed.
format(statement: Statement): string
Formats the given statement into a SQL string.
Parameters:
statement- The SQL statement for format.
SQLVisitor
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
Basic SELECT
let result = parse("SELECT * FROM users", "postgresql");
// Returns JSON representation of the SELECT statement ASTComplex Query
let sql = `
SELECT u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.active = true
GROUP BY u.name
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC
LIMIT 10
`;
let result = parse(sql, "mysql");
// Returns detailed JSON AST including joins, aggregations, etc.Building
# Build the library
pnpm buildTesting
pnpm testContributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
