Skip to content

@memberjunction/sqlglot-ts

A TypeScript wrapper for Python’s sqlglot SQL transpiler. Provides deterministic, verifiable SQL dialect conversion via a managed local Python FastAPI microservice.

  • 31 SQL dialects supported (T-SQL, PostgreSQL, MySQL, Snowflake, BigQuery, etc.)
  • Deterministic conversion — no LLM randomness, reproducible results
  • Zero MemberJunction dependencies — standalone community package
  • Ephemeral port binding — microservice runs on 127.0.0.1 with auto-assigned port
  • Managed lifecycle — automatic startup/shutdown of the Python process
  • Statement-by-statement mode — individual statement tracking, one failure doesn’t block others
  • Python 3.9+ with the pinned dependencies installed:
Terminal window
pip install -r requirements.txt

Dependencies (sqlglot, fastapi, uvicorn, pydantic) are pinned in requirements.txt so conversion output is reproducible. See the comments in that file for the upgrade procedure.

import { SqlGlotClient } from '@memberjunction/sqlglot-ts';
const client = new SqlGlotClient();
await client.start();
// Transpile T-SQL to PostgreSQL
const result = await client.transpile(
"SELECT ISNULL(col, 0) FROM [dbo].[MyTable]",
{ fromDialect: 'tsql', toDialect: 'postgres' }
);
console.log(result.sql);
// Output: SELECT COALESCE(col, 0) FROM "dbo"."MyTable";
// Statement-by-statement mode
const stmtResult = await client.transpileStatements(
"SELECT TOP 10 * FROM Users; SELECT GETDATE();",
{ fromDialect: 'tsql', toDialect: 'postgres' }
);
console.log(stmtResult.statements);
// Parse SQL to AST
const ast = await client.parse(
"SELECT 1",
{ dialect: 'postgres' }
);
// List supported dialects
const dialects = await client.getDialects();
// Health check
const health = await client.health();
await client.stop();
OptionTypeDefaultDescription
pythonPathstring'python3'Path to Python executable
serverPathstringauto-detectedPath to server.py
startupTimeoutMsnumber30000Max ms to wait for server startup
requestTimeoutMsnumber60000Max ms per HTTP request
  • start() — Start the Python microservice
  • stop() — Stop the Python microservice
  • transpile(sql, options) — Transpile SQL between dialects (batch)
  • transpileStatements(sql, options) — Transpile statement-by-statement
  • parse(sql, options) — Parse SQL to AST (JSON)
  • getDialects() — List all supported dialects
  • health() — Server health check

This package wraps the excellent sqlglot Python library by Toby Mao and contributors. sqlglot provides a comprehensive SQL parser, transpiler, and optimizer supporting 31 SQL dialects with 8,900+ stars and 7,000+ commits.

ISC