Skip to content

tusharad/sql2er

Folders and files

NameName
Last commit message
Last commit date

Latest commit

318925e · Dec 31, 2024

History

36 Commits
Dec 31, 2024
Dec 31, 2024
Dec 31, 2024
Dec 31, 2024
Dec 31, 2024
Dec 30, 2024
Nov 13, 2024
Nov 9, 2024
Nov 9, 2024
Nov 3, 2024
Nov 9, 2024
Dec 31, 2024
Nov 3, 2024
Nov 3, 2024
Nov 14, 2024
Dec 31, 2024
Nov 14, 2024
Dec 31, 2024
Nov 3, 2024
Nov 3, 2024

Repository files navigation

Contributors
Forks
Stargazers
Issues
MIT License
LinkedIn

Logo

SQL 2 ER

A command-line tool to convert SQL scripts into Entity-Relationship (ER) diagrams.
Designed to work with PostgreSQL syntax.
Report a Bug · Request a Feature


Table of Contents


Checkout web version powered by WebAssembly

Example

Input: test.sql

begin;

create table users (
	user_id serial primary key
  , user_name varchar(255) not null unique
  , email varchar(255) not null unique
  , password text not null
  , created_at timestamptz default now()
  , updated_at timestamptz default now()
);

create table user_profile_image (
	user_id int references users on delete cascade primary key
 ,  user_profile_image text not null
 ,  created_at timestamptz default now()
 ,  updated_at timestamptz default now()
);
...

Command:

./sql2er-exe test.sql -o erd.jpeg

Output:

ER Diagram


Getting Started

Option 1: Download Binary

  1. Download the binary from the Releases page.

  2. Run the tool:

    ./sql2er-exe test.sql -o erd.jpeg

Option 2: Build from Source

  1. Install Stack via GHCup.

  2. Clone the repository and navigate to the project root.

  3. Build the binary for linux:

    stack build
    cp $(stack path --local-install-root)/bin/sql2er-exe .
    ./sql2er-exe test.sql -o erd.jpeg

Option 3: Build WASM

  1. Install wasm32-wasi-cabal from here
  2. Make sure to download the 9.8 FLAVOUR.
wasm32-wasi-cabal build sql2er-wasm -f build-sql2er-wasm
cp path/to/sql2er-wasm.wasm .
python3 -m http.server

Built With

Haskell

(back to top)


Roadmap

  • Add Changelog
  • Add Test Cases
  • Support GENERATED Constraint
  • Gracefully Ignore Partitions
  • Support bigserial
  • Add Additional Examples
  • Enhance Documentation
  • Add More Parsing Functions
  • Support Interval Data Type
  • Support 2D Arrays

For the full list of proposed features and known issues, check out the open issues.

(back to top)


Limitations

  • Needs internet connection since, We are sending request to mermaid API.
  • Syntax Validation:
    The parser doesn't validate SQL syntax; it extracts only the necessary information for generating ER diagrams.
  • PostgreSQL Specific:
    Designed and tested using PostgreSQL 17.

(back to top)


Unsupported Features

  • DETACH
  • USING ...
  • TABLESPACE
  • NOT VALID
  • VALIDATE
  • INTERVAL Data Type

(back to top)


Acknowledgments

This project was inspired by sqldiagram, which focuses on MySQL but lacked robust parsing capabilities.

(back to top)