Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

guan404ming/sqlparser-ts

Repository files navigation

sqlparser-ts

npm version npm downloads License WebAssembly sqlparser

SQL parser for JavaScript and TypeScript, powered by datafusion-sqlparser-rs via WebAssembly.

News

  • [2026/02] sqlparser-ts has been officially integrated into Apache Airflow
  • [2026/01] Officially released sqlparser-ts πŸŽ‰

Features

  • Parse SQL into a detailed AST with full TypeScript types
  • Support 14 SQL dialects (PostgreSQL, MySQL, SQLite, BigQuery, and more)
  • Run in Node.js and browsers
  • Stay small (~600KB gzipped) and fast (Rust + WebAssembly)
  • Ship zero native dependencies

Installation

npm install @guanmingchiu/sqlparser-ts

Usage

import { init, parse, format, validate } from '@guanmingchiu/sqlparser-ts';
// Initialize WASM module (must be called once before using any parser functions)
await init();
// Parse SQL into AST
const ast = parse('SELECT * FROM users');
// With specific dialect
const ast = parse('SELECT * FROM users WHERE id = 1ドル', 'postgresql');
// Format SQL
const sql = format('select * from users');
// "SELECT * FROM users"
// Validate SQL (throws on invalid)
validate('SELECT * FROM users'); // ok

Vite Configuration

WASM packages must be excluded from Vite's dev server dependency pre-bundling. This only affects the dev server. Production builds use Rollup instead of esbuild and handle WASM files correctly.

// vite.config.ts
export default defineConfig({
 optimizeDeps: {
 exclude: ['@guanmingchiu/sqlparser-ts'],
 },
});

Working with AST

// Parse and inspect
const ast = parse('SELECT id, name FROM users WHERE active = true');
console.log(JSON.stringify(ast, null, 2));
// Multiple statements
const statements = parse(`
 SELECT * FROM users;
 SELECT * FROM orders;
`);
console.log(statements.length); // 2
// Modify AST and convert back to SQL
const ast = parse('SELECT * FROM users')[0];
// ... modify ast ...
const sql = format(JSON.stringify([ast]));

Error Handling

try {
 parse('SELEC * FORM users');
} catch (e) {
 console.error(e.message); // Parse error details
}

Supported Dialects

generic, ansi, mysql, postgresql, sqlite, snowflake, redshift, mssql, clickhouse, bigquery, duckdb, databricks, hive, oracle

Versioning

Follows Semantic Versioning with upstream tracking:

Example: 0.60.4 = upstream 0.60 + 4 sqlparser-ts releases

License

Apache-2.0

About

SQL parser for JavaScript and TypeScript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /