SQLFlow-ingester

SQLFlow Ingester (formerly Grabit) collects SQL from your data estate — the DDL of tables, views, stored procedures, functions, triggers, and packages — and feeds it to SQLFlow for column-level data lineage analysis. It reads from live databases over JDBC, from revision systems like GitHub and Bitbucket, and from the local file system. It extracts metadata only and never reads the rows in your tables.

13database dialects, over JDBC
Metadata-onlyread-only — never reads table data
2export formats — single JSON and sharded
Air-gappedplain-file output, no live connection to consume

Run it in 3 minutes: point the ingester at a database, and it writes a metadata bundle SQLFlow turns into an interactive column-level lineage diagram. Everything runs from the command line, so it schedules cleanly as a cron job.

Collect SQL from three kinds of source

Connect to a database

Connect to a database

Extract DDL — CREATE TABLE, CREATE VIEW, stored procedures, functions, triggers, and constraints — from Oracle, SQL Server, Snowflake, PostgreSQL, and 9 more dialects over JDBC, and send it to SQLFlow for analysis.

Connect to a revision system

Fetch SQL files straight from GitHub, Bitbucket, and other revision systems, and send them to SQLFlow to build the data lineage from the code your team already version-controls.

Connect to GitHub or Bitbucket
Search the file system

Search the file system

Find SQL files in a local directory tree and push them to SQLFlow to visualize the data lineage — handy for scripts and exports that never made it into a database or a repo.

Two export formats: single JSON and sharded

When the ingester reads a database, it writes a normalized metadata bundle — catalog structure plus the DDL text of every view, procedure, function, trigger, and foreign key. One model covers every supported dialect; each vendor simply omits the object types it doesn’t have. That bundle comes in two shapes.

Single JSONSharded (default)
On diskOne metadata.json fileA directory: manifest.json + catalog/ + source/ + index/
Where DDL livesInline, in servers[].queries[]In source/*.jsonl, located by a byte-offset index/*.idx
Best forSmall and medium catalogsLarge estates — catalog stays resident, multi-GB DDL streams and seeks
ExtrasSimplest to consumePer-shard SHA-256, per-object content hashing, incremental exports, block compression

Single JSON puts the whole estate in one file with every object’s DDL inline — the simplest thing to parse. Sharded is the default for large estates: it streams the export with bounded memory, keeps the structural catalog small and resident, makes the DDL random-seekable through an index, and writes its manifest last so a consumer never sees a half-written export. Full field-by-field references: single JSON export and sharded export.

Discover data lineage in a SQL Server database in 3 minutes

Run it from the command line, on a schedule

The ingester is a self-contained Java tool you run from the command line, so it schedules cleanly as a cron job for automated, repeatable extraction. Passwords can be supplied from an environment variable or a file so they never appear in the process arguments, and fine-grained include/exclude filters control exactly which databases, schemas, and objects are extracted. See the SQLFlow Ingester documentation to get started.

Get lineage from your database estate

Download the SQLFlow Ingester, point it at a database, and turn its metadata into column-level data lineage.