In short: what does a SQL to CSV converter do?
A SQL to CSV converter reads a SQL script or database dump and pulls the actual row data out of its INSERT statements and CREATE TABLE definitions into a flat, tabular CSV spreadsheet. This platform is dialect-aware across MySQL, PostgreSQL, SQL Server, Oracle, SQLite and more, detects multiple tables in one dump, and lets you map fields, clean data, profile columns and export to CSV, Excel, JSON, XML, YAML, Markdown and more — all 100% in your browser, with no data ever uploaded.
Dump & INSERT parsing
Extract rows from INSERT … VALUES and CREATE TABLE in any SQL script.
Multi-table extraction
Every table in a dump is detected and exported independently.
Dialect-aware
MySQL, PostgreSQL, SQL Server, Oracle, SQLite, Snowflake & more.
Field mapping
Include, exclude, rename and reorder columns before export.
Data profiling
Per-column types, null counts and a 0–100 quality score.
100% private
Everything runs in your browser. Your data is never uploaded.
What is SQL to CSV conversion?
SQL (Structured Query Language) is the language and storage representation of relational databases. A SQL file or dump describes tables with typed columns and constraints (CREATE TABLE) and populates them with rows (INSERT … VALUES). It is precise and self-documenting, but it is not something a spreadsheet, a BI dashboard or a data scientist can open directly. CSV (Comma-Separated Values) is the opposite — a flat grid of rows and columns that every spreadsheet, database loader and analytics tool understands instantly. SQL to CSV conversion is the process of extracting the row data out of the database representation and writing it as a portable, tool-agnostic table.
The crucial thing to understand is what gets converted. This tool does not connect to a database and run a query — there is no engine attached. Instead it parses the SQL text itself, reading the literal values written inside INSERT … VALUES statements (including multi-row inserts) and the column names and types declared inCREATE TABLE. That is exactly the content of a typical mysqldump, pg_dump or SQLite dump, so a full database export is reconstructed table by table directly from the file you paste or upload.
Because the parser is dialect-aware, it copes with the genuine messiness of real dumps. Different databases quote identifiers differently — backticks in MySQL, double quotes in PostgreSQL, square brackets in SQL Server — and escape string literals differently, whether by doubling a quote or, in MySQL, using backslash escapes. The tokenizer understands all of these, so a value like O''Brien is decoded to O'Brien and a comma-bearing value like “Smith, John” survives as a single cell. The result is a clean, rectangular dataset ready for Excel, a notebook, or a fresh database table.
It also helps to see the difference in miniature. A single INSERT INTO employees (id, name, salary) VALUES (1, 'Ada', 128000.00) describes one row of three columns. The converter reads the column list to name the columns and the value tuple to fill the cells, producing a CSV header of id,name,salary followed by the line 1,Ada,128000.00. Scale that up to a multi-row insert with thousands of tuples, repeated across many tables, and you have the whole dataset — extracted without a database, a network call, or a single query being executed. That is the mental model worth carrying into the rest of this guide: text in, table out, entirely on your machine.
SQL export guide
Turning a SQL script into a downloadable CSV takes only a few moments. The workflow is the same whether you paste a singleINSERT or upload a multi-megabyte dump:
- Paste or upload your SQL. Drop a
.sqlor.txtfile onto the editor, click upload, fetch one from a public URL, or simply paste the script. Files up to 100MB are accepted and never leave your machine. - Pick the table. The parser groups every
CREATE TABLEandINSERTby name. When a dump contains more than one table, a picker appears so you can switch between them and export each independently. - Map the columns. In Field Mapping you can include or exclude columns, rename them to friendlier headers (turn
usr_emlintoEmail), and reorder them up or down — the original SQL is never touched. - Choose your delimiter. Comma for standard CSV, semicolon for European locales, tab for TSV, or pipe. Fields containing the delimiter, quotes or newlines are automatically quoted per RFC 4180.
- Export. Copy the output, or download CSV, TSV, Excel, JSON, XML, YAML, an HTML table, a Markdown table or a fresh SQL script — each generated client-side from the extracted rows.
Before you download, the Convert tab shows the extracted rows as an interactive spreadsheet — sortable, searchable columns with sticky headers and pagination — beside the live CSV output. That lets you verify the extraction visually and catch any surprises while there is still time to adjust the mapping. The preview is paginated rather than rendering every row at once, so even a dump that yields hundreds of thousands of rows stays responsive and the browser tab never freezes.
A few touches make the round trip smoother in practice. If your dump comes from a specific database, set the dialect so identifier quoting and string escaping are interpreted correctly from the first pass; the default standard mode handles most files, but choosing mysql for a mysqldump, say, ensures backslash escapes are decoded properly. You can paste straight from a query tool, drag a file in, or fetch one from a URL — whichever fits your workflow. And because nothing is uploaded, you can safely work with dumps that contain access tokens, internal IDs or personal data: the file is read, parsed and exported entirely in the page you are looking at.
SQL vs CSV: understanding the difference
SQL and CSV solve different problems. One stores and manipulates structured data inside a database; the other moves a snapshot of that data anywhere a table is needed.
| Aspect | SQL | CSV |
|---|---|---|
| Nature | Language + storage for relational data | Flat file of rows & columns |
| Data types | Strongly typed columns & constraints | Untyped text |
| Structure | Tables, keys, relationships | A single table per file |
| Tooling | Needs a database engine | Opens in any spreadsheet |
| Portability | Dialect-specific syntax | Universal, tool-agnostic |
| NULL handling | Explicit NULL literal | Usually an empty cell |
| Best for | Storage, queries, integrity | Analytics, exports, sharing |
The practical distinction is ownership and reach. SQL keeps your data inside the database, where types, keys and constraints guarantee its integrity. CSV is what you reach for the moment that data needs to leave the database — to be read by a person, charted in a BI tool, or loaded into a different system. Converting SQL to CSV is therefore an act of liberation: it takes the rows that an INSERT would have written into a table and hands them to you as a file anything can read.
One subtlety follows from CSV being untyped. In the database, salary DECIMAL(10,2) is a number andactive BOOLEAN is a true/false flag; in CSV everything is text. This tool preserves the original types when you export to JSON, YAML or XML — integers and decimals stay numbers, TRUE/FALSEbecome booleans and NULL becomes null — while CSV writes plain values with a NULL rendered as an empty cell. Because the platform also converts CSV, JSON, XML and YAML back to SQL, it works as a two-way bridge in either direction.
It is also worth noting what is lost in the SQL-to-CSV direction, because that loss is the point. Keys, foreign-key relationships, indexes, default values and check constraints all live in the database schema, not in the rows — so a CSV captures the data but not the rules that governed it. That is exactly why CSV travels so well: it carries only the values, letting the receiving system impose its own structure. When you do need the structure back, the Schema tab can regenerate aCREATE TABLE from the data, and the Reverse tab can rebuild a populated table, but the relational guarantees are reconstructed by the target rather than carried in the file.
Database export best practices
A CSV is only useful if it re-imports cleanly into the next tool in the chain. The format is deceptively simple — it has no official standard older than RFC 4180, and tools disagree about delimiters, quoting and encoding — which is precisely why a handful of disciplined defaults save so much grief. A few habits make the difference between a file that “just works” everywhere and one that scrambles columns or mangles accented characters the moment it crosses a tool boundary:
- Always include a header row so the columns are self-describing wherever the file is opened. Names come from your CREATE TABLE or INSERT list, and you can rename them in Field Mapping.
- Pick the delimiter for your locale. Use a comma for standard CSV, but a semicolon for European Excel, where the comma is a decimal separator and would otherwise split numbers.
- Add a UTF-8 BOM for Excel. The CSV and Excel downloads include one so accented characters, emoji and non-Latin scripts render correctly instead of as mojibake.
- Quote per RFC 4180. Any field containing the delimiter, a quote or a newline is automatically wrapped in quotes and its inner quotes doubled, so a value like “Smith, John” stays a single field.
- Decide how NULL is written. By default a SQL
NULLbecomes an empty cell in CSV; in JSON/YAML/XML it staysnull. Be explicit so downstream loaders distinguish “empty” from “missing”. - Normalise headers for databases — lowercase, snake_case, no spaces — using the cleaning and renaming options before re-loading into another database.
- Verify in the preview. Sort and search the live spreadsheet to confirm the extraction matched the right columns and rows before you download.
Cleaning is non-destructive: trimming whitespace, dropping fully empty rows and removing exact duplicates all happen on the way to export, while your original SQL stays exactly as you pasted it. That means you can experiment freely with mappings and cleaning options and always fall back to the untouched source.
The single most common cause of a “broken” CSV is column drift — one stray unquoted comma shifting every value to the right of it into the wrong column for the rest of the row. The defaults here are designed to prevent exactly that: every field that could be ambiguous is quoted, every embedded quote is doubled, and the header row anchors the column order. If you stick to those defaults and verify the first few rows in the preview, the file will re-import cleanly into whatever opens it, which is ultimately the only test that matters for an export.
Processing SQL dumps
The headline use case is converting a database dump — the file your database hands you when you run a backup or export. Dumps are the canonical way databases serialise themselves to disk, and despite the differences between vendors they share a common shape: schema first, data second, one statement per object. These come in predictable forms, and the parser is built to walk all of them:
- mysqldump — a
CREATE TABLEper table followed by large multi-rowINSERTstatements, using backtick identifiers and backslash string escapes. - pg_dump — PostgreSQL output with double-quoted identifiers and standard quote-doubling for strings (the plain-SQL form, not the binary custom format).
- SQLite dumps — the output of
.dump, interleavingCREATE TABLEandINSERTstatements for each table. - SQL Server scripts — “Generate Scripts” output with bracketed identifiers and
GObatch separators, which the splitter treats as statement boundaries. - Hand-written seed files — the migration and fixture scripts developers keep in a repo, which are usually just a few CREATE and INSERT statements.
Internally the script is tokenized in a single pass, then split into individual statements. Each CREATE TABLE is read for its column names and declared types, and each INSERT is matched to its table by name — so a dump that declares a table and then fills it with dozens of separate INSERTs is reconstructed into one complete dataset. Column names come from the INSERT column list when present, otherwise from the matching CREATE TABLE, and if neither exists the tool generates column_1, column_2, … so you always get a clean rectangular table you can rename later.
When a single file contains multiple tables — as almost every real dump does — they are detected automatically and grouped by name. A table picker lets you switch between them and export each one independently to CSV, JSON or any other format. Each export is self-contained, so pulling just the employeestable out of a fifty-table dump is a couple of clicks.
The matching logic is deliberately forgiving. Column names are taken from the INSERT column list first, because that is the most reliable source and reflects exactly the order the values were written. If the INSERT omits the list — common in mysqldump output, which writes the bare INSERT INTO t VALUES … — the names fall back to the matchingCREATE TABLE. Where a CREATE precedes its INSERTs, you get fully named, typed columns; where it does not, you still get a usable table with generated names that you can rename in one pass. Every row is also aligned to the table's column count, so a stray short tuple is padded rather than throwing the whole grid out of register.
There is one honest limitation worth stating plainly. An INSERT … SELECT statement copies rows from another query rather than listing literal values, so without running the database there is nothing to extract. The tool flags these in its warnings and focuses on INSERT … VALUES, which carries the actual data. To export query results, first materialise them as INSERT … VALUES or a CSV from your database client, then bring that into the converter. The same applies to COPY … FROM stdin blocks in some PostgreSQL dumps: they reference external data rather than inline literals, so the literal-row path is the one that always works.
Data migration workflows
Moving data between systems is where a SQL-to-CSV converter earns its keep. CSV is the universal interchange format — the lowest common denominator that every database, warehouse and spreadsheet can read and write — so it sits in the middle of almost every migration path. Rather than build a bespoke connector between each pair of systems, teams export to CSV from the source and import from CSV into the destination, and the converter handles the awkward extraction step that turns a SQL dump into that neutral file:
- Database to database — extract rows from a MySQL dump, clean and remap the columns, then export a fresh SQL script (or CSV) to load into PostgreSQL, smoothing over dialect differences along the way.
- Database to warehouse — turn production
INSERTs into a CSV that a bulk loader (Redshift, Snowflake or BigQuery) ingests far faster than row-by-row inserts. - Database to spreadsheet or BI — hand analysts a clean CSV or Excel file from a dump, so they can work in the tools they already know without database access.
Because the platform also runs in reverse, a migration can be a genuine round-trip. The Reverse tab converts CSV, JSON, XML and YAML back into SQL, generating a CREATE TABLE plus INSERT statements with inferred column types. So you can extract rows from one database as CSV, edit them, and regenerate SQL to populate another — all without writing a migration script or installing a single tool.
A common migration headache is dialect drift— syntax that is valid in the source database but not the target. Routing the data through CSV side-steps most of it: the CSV holds only values, with none of the source's quoting, escaping or type quirks, so the regenerated SQL is written cleanly in the target's style. A MySQLTINYINT(1) standing in for a boolean, backtick-quoted column names, or backslash-escaped strings all disappear into plain CSV cells and re-emerge as portable, standard SQL when you reverse the conversion.
The privacy model makes this safe for real work. Every step — tokenising, extraction, cleaning, mapping and export — runs locally in your browser. Production dumps, customer records and anything subject to compliance rules never touch a server, which means you can convert sensitive data on your own machine without a data-processing agreement or a security review of a third-party endpoint. For teams that cannot send data to external SaaS tools, that local-only guarantee is often the deciding factor in being allowed to use a converter at all.
SQL data transformation
Extracting rows is only half the job — real datasets need transformation before they are useful elsewhere. This platform folds the core steps of a lightweight ETL (Extract, Transform, Load) pipeline into the browser, so a raw dump becomes a tidy, purpose-built table without any code:
- Field mapping — include only the columns you need, rename them to clean headers, and reorder them into the shape the destination expects.
- Cleaning — trim surrounding whitespace, drop fully empty rows and remove exact duplicate rows, all non-destructively.
- Type awareness — SQL literals keep their natural types in JSON, YAML and XML output (integers and decimals as numbers,
TRUE/FALSEas booleans,NULLas null), while the profiler infers a dominant type per column. - Reshaping — pick a single table out of a multi-table dump, drop noise columns, and emit exactly the columns and rows the next system wants.
- Deduplication & tidy-up — collapse exact duplicate rows and strip empty ones so the loaded dataset has no padding or repetition to clean up later.
Think of it as a browser-based ETL step that sits between a dump and its destination. The Extract phase parses the SQL; the Transform phase maps, cleans and profiles; the Load phase exports to whatever format the target accepts. Because the whole pipeline is visual and instant, you can iterate — adjust a mapping, re-check the preview, re-export — in seconds rather than editing and re-running a script.
A worked example shows how the pieces combine. Imagine a users table dumped from MySQL with columns likeusr_id, usr_eml, created_ts and an internal pwd_hash you must never export. In one session you exclude pwd_hash, rename usr_eml to Email andcreated_ts to CreatedAt, trim stray whitespace, drop a handful of duplicate test rows, glance at the quality score to confirm the email column is fully populated, and export a tidy CSV. No script, no staging table, no round-trip to a server — just a few clicks between a raw dump and an analysis-ready file.
When you want to lock in the structure you have shaped, the Schema tab derives a JSON Schema (Draft-07), TypeScript interfaces and a SQL CREATE TABLE from the actual extracted values. That makes it easy to type an export for an API, generate fixtures, or recreate the table faithfully in another database — the inferred types come from the data you actually have, not from an assumption about what it might contain.
CSV analytics use cases
The reason to land data as CSV is almost always analysis. A SQL dump is fine for backup and restore, but it is opaque to the people who actually need to ask questions of the data. Convert it to CSV and the rows become immediately tractable: once they are out of the database, every analytics tool can take them straight away, with no driver, credential or connection string in sight:
- Excel & Google Sheets — open the CSV directly, or use the Excel (.xls) export for a pre-styled sheet; pivot, chart and filter with no setup.
- pandas —
pd.read_csv('data.csv')is the de-facto entry point for tabular analysis and machine learning in Python. - BI tools — Tableau, Power BI and Looker all ingest CSV effortlessly for dashboards and reports.
- Quick checks — a CSV opens anywhere, so it is the fastest way to eyeball a dump's contents.
Before you trust a dataset, though, you should understand it. The Analyze tab profiles every extracted column and grades the dataset 0–100 (A–F) across four dimensions: completeness (how many cells are filled rather than NULL), consistency (how uniformly each column sticks to one type), validity (how many values match their expected format) and uniqueness (how few rows are duplicates).
For each column you also get the dominant type, the unique-value count, the NULL count and fill rate, the min and max (and an average for numeric columns) and the most frequent values. That profile tells you instantly whether a column is a good join key, whether a field is mostly empty, or whether dates are formatted inconsistently — the kind of insight that prevents a broken dashboard or a failed warehouse load downstream.
There is also a separate SQL analyzer aimed at the script rather than the data it carries. It reports statement counts by type (SELECT, INSERT, CREATE and so on), the number of tables, joins, subqueries, CTEs and functions, the maximum nesting depth, and a plain-English explanation of each statement. When you inherit an unfamiliar dump and need to know what is in it before committing to an export — how many tables, how big, what kind of statements — that overview answers the question in seconds. Together, the data profiler and the SQL analyzer let you understand both the shape of the file and the quality of the rows inside it before a single byte leaves your browser.
Data warehousing exports
For analytics at scale, CSV is the bulk-loading format of choice. Warehouses ingest a single CSV far faster than thousands of individual INSERT statements, because the loader can read the file in parallel and skip the per-statement overhead of parsing, planning and committing each row. Converting a dump to CSV and then bulk-loading is therefore the standard fast path for getting data into a columnar store. Each warehouse has its own loader; the CSV this tool produces — UTF-8, RFC 4180 quoted, with a header row — is compatible with all of them:
| Target | Load command | Notes |
|---|---|---|
| PostgreSQL | COPY t FROM 'data.csv' CSV HEADER | Native, fastest local bulk load |
| Redshift | COPY t FROM 's3://…' CSV | Stage the CSV in S3 first |
| Snowflake | COPY INTO t FROM @stage FILE_FORMAT=(TYPE=CSV) | Upload to a stage with PUT |
| BigQuery | bq load --source_format=CSV ds.t data.csv | Or load from a Cloud Storage URI |
| MySQL | LOAD DATA INFILE 'data.csv' INTO TABLE t | FIELDS TERMINATED BY ',' |
| SQLite | .import --csv data.csv t | From the sqlite3 shell |
Two details from this tool make warehouse loads reliable. First, the header row lets COPY … HEADERand BigQuery's schema auto-detection line columns up by name rather than position. Second, consistent NULL and quoting handling means empty cells and comma-bearing strings load as intended rather than shifting every column to the right. Profiling the data first — using the quality score — is the cheapest possible insurance against a load that fails halfway through a billion rows.
The workflow that scales best is to extract once, then stage and load. Pull the table out of the dump as CSV, drop the file into your object store (S3 for Redshift, a Snowflake stage, a Cloud Storage bucket for BigQuery), and point the warehouse'sCOPY or load command at it. Because the CSV is plain UTF-8 with a header and RFC 4180 quoting, you rarely need to fiddle with file-format options — the defaults of every major warehouse loader match what the converter produces. For repeated loads, settling on one delimiter and NULL convention up front means the same COPY command works for every table you export.
If the destination is another relational database rather than a columnar warehouse, the Reverse tab's SQL output is often a better fit: it emits a CREATE TABLE with inferred types plus batched INSERTs, giving you a ready-to-run script instead of a file you still have to wire into a loader.
Why use this SQL to CSV platform
Most online converters do one thing: paste some SQL, get a CSV blob, and hope the parser coped with your dialect. This platform is built for the full data-transformation workflow. It performs dialect-aware extraction ofINSERT … VALUES and CREATE TABLE across MySQL, MariaDB, PostgreSQL, SQL Server, Oracle, SQLite, Snowflake, BigQuery and Redshift, detects every table in a dump and offers a multi-table picker, and infers natural types into JSON (numbers, booleans and null preserved from the SQL literals). You can visually map, rename and reorder columns, clean and de-duplicate rows, and profile every column with a 0–100 data-quality score. It generates a schema — JSON Schema, TypeScript interfaces and a SQL CREATE TABLE — from your actual data, exports to multiple formats (CSV, TSV, Excel, JSON, XML, YAML, HTML, Markdown and SQL), and converts CSV, JSON, XML and YAML back to SQL for true round-trip migrations. Best of all it runs 100% client-side, so it is private, offline-capable and safe for production dumps. For developers, analysts and data engineers who move rows between databases, spreadsheets and warehouses every day, it is a complete, browser-based ETL companion.
The breadth is what sets it apart from a single-purpose converter: extraction, mapping, cleaning, profiling, schema generation, multi-format export and reverse conversion are all part of one local pipeline rather than a chain of separate tools. Paste a dump and you can go all the way from raw SQL to a verified, analysis-ready CSV — or to a fresh SQL script for another database — without leaving the page or trusting your data to anyone else's server.
Frequently asked questions
Paste, upload or drag-and-drop a SQL script containing INSERT statements (and optionally CREATE TABLE) into the editor. The tool extracts every table’s rows and renders them as a live spreadsheet you can copy or download as CSV. Column names come from the CREATE TABLE or the INSERT column list, and everything runs in your browser — your data is never uploaded.
It reads the parts of SQL that actually carry data: INSERT … VALUES statements (including multi-row inserts) and CREATE TABLE definitions for column names and types. A full database dump — CREATE TABLE followed by many INSERTs — is reconstructed table by table. It cannot execute SELECT queries (no database is attached), so it converts INSERT data rather than live query results.
Yes — that is the primary use case. Paste or upload a mysqldump, pg_dump or SQLite dump and the converter walks every statement, matching INSERTs to their CREATE TABLE, and lets you export each table separately. Multiple tables in one dump are detected automatically and shown in a table picker.
Yes. Every CREATE TABLE and INSERT is parsed and grouped by table name. When more than one table is found, a picker lets you switch between them, and each can be previewed, mapped and exported independently to CSV, JSON or any other format.
The parser is dialect-aware across MySQL, MariaDB, PostgreSQL, SQL Server (T-SQL), Oracle, SQLite, Snowflake, BigQuery and Redshift. It understands their different identifier quoting (backticks, double quotes, square brackets) and string escaping (doubled quotes and, for MySQL, backslash escapes), so dumps from any of these databases parse correctly.
Column names are taken from the INSERT column list when present (INSERT INTO t (a, b, c) …). If the INSERT omits the column list, the names come from a matching CREATE TABLE definition. If neither is available, the tool generates column_1, column_2, … so you still get a clean, rectangular table that you can rename in Field Mapping.
Yes. Alongside CSV the Export tab produces an Excel-compatible file (.xls) that opens directly in Microsoft Excel, LibreOffice Calc and Google Sheets, plus TSV for tab-delimited workflows. For non-comma locales you can switch the delimiter to semicolon so columns split correctly in European Excel.
CSV, TSV, Excel (.xls), JSON, XML, YAML, an HTML table, a Markdown table and SQL — all generated client-side from the extracted rows. So the tool is really a SQL-to-anything exporter, with CSV as the headline format.
Yes. Switch the Export format to JSON and the extracted rows become an array of objects with typed values (numbers, booleans and null are preserved from the SQL literals). This is ideal for seeding NoSQL stores, building fixtures or feeding an API.
The tokenizer is a single-pass scanner that stays fast on large scripts, and the spreadsheet preview is paginated so the DOM stays small no matter how many rows are extracted. Files up to 100MB are accepted, and because all processing is local there is no upload step. For multi-gigabyte dumps we recommend splitting the file first.
In JSON, YAML and XML output, SQL literals are kept as their natural types — integers and decimals become numbers, TRUE/FALSE become booleans and NULL becomes null. CSV itself is untyped, so values are written as text, with NULL rendered as an empty cell by default.
A SQL NULL is converted to an empty cell in CSV and to null in JSON/YAML/XML. The data profiler counts NULLs per column and factors them into the completeness score, so you can see exactly how sparse each column is before exporting.
String literals are unescaped correctly: a doubled single-quote inside a value collapses to one quote, and MySQL backslash escape sequences (such as newline and tab) are decoded. Values containing commas, quotes or newlines are then re-quoted per RFC 4180 in the CSV output, so a value like “Smith, John” stays a single field.
Yes. The Field Mapping tab lists every detected column. You can include or exclude any column, rename it to a friendlier header, and reorder columns up or down. Only the columns you keep — in the order you set — appear in the exported CSV or other format.
Yes. Each detected column has an editable output name in the Field Mapping tab. The original SQL is untouched while the CSV header (or JSON key) uses your chosen label — handy for turning usr_eml into Email or order_dt into OrderDate.
Yes. The cleaning options trim surrounding whitespace, drop fully empty rows and remove exact duplicate rows before export, so the file you download is analysis-ready. All cleaning is non-destructive — your original SQL stays intact.
The Analyze tab reports statement counts by type (SELECT, INSERT, CREATE …), the number of tables, joins, subqueries, CTEs and functions, the maximum nesting depth and a plain-English explanation of each statement. It is a quick way to understand an unfamiliar script or dump before you export it.
Yes. The profiler grades the extracted dataset 0–100 (A–F) across four dimensions — completeness (filled cells), consistency (uniform types per column), validity (values matching their expected format) and uniqueness (few duplicate rows) — alongside a per-column breakdown of type, nulls, unique values and min/max.
Yes. The Schema tab derives a JSON Schema (Draft-07), TypeScript interfaces and a SQL CREATE TABLE definition from the extracted rows, inferring types from the actual values — useful for typing an export or recreating the table in another database.
Yes. The Reverse tab converts CSV, JSON, XML and YAML into SQL — generating a CREATE TABLE plus INSERT statements with inferred column types. Combined with the main SQL→CSV direction, the tool is a two-way bridge between databases and tabular files.
INSERT … SELECT copies rows from another query rather than listing literal values, so there is nothing to extract without running the database. The tool flags these and focuses on INSERT … VALUES, which carries the actual data. To export query results, first materialise them as INSERTs or a CSV.
Yes. The import bar fetches a SQL file directly from a public URL (subject to the remote server’s CORS policy), in addition to pasting, uploading or dragging .sql and .txt files.
Completely. All tokenising, extraction, transformation and export run locally in your browser using JavaScript — nothing is uploaded, logged or stored remotely. That makes the tool safe for production dumps, customer data and anything subject to compliance rules.
Yes. It is 100% free with no sign-up, no usage limits and no watermarks. Convert, map, clean, profile and export as many tables and as much data as you like, in any supported format.
Comma (standard CSV), semicolon (common in European locales), tab (TSV) or pipe. Fields that contain the delimiter, quotes or newlines are automatically quoted and escaped per RFC 4180, so the file always re-imports cleanly.
Yes. CSV and Excel downloads include a UTF-8 byte-order mark so accented characters, emoji and non-Latin scripts display correctly when the file is opened in Excel, which otherwise assumes a legacy encoding.
Yes. The Convert tab shows the extracted rows as an interactive spreadsheet — sortable, searchable columns with sticky headers and pagination — next to the live CSV output, so you can verify the extraction and spot issues before exporting.
Use the table picker that appears when multiple tables are detected. Select the table you want, optionally map its columns, then copy or download just that table. Repeat for each table you need — each export is independent.
Yes. The tokenizer understands quoted string literals that span multiple lines and contain escaped quotes, so a TEXT column holding a paragraph with line breaks is extracted as a single cell and correctly quoted in the CSV.
Absolutely. Extracting INSERT data, cleaning and mapping columns, profiling quality and exporting to CSV, JSON or a fresh SQL script makes the tool a lightweight, browser-based ETL step for migrating data between databases, loading a warehouse, or moving rows into a spreadsheet or BI tool.
SQL is a language and storage format for relational databases — typed columns, constraints and statements that define and populate tables. CSV is a flat, untyped grid of rows and columns understood by every spreadsheet and BI tool. Converting SQL to CSV extracts the row data out of the database representation into a portable, tool-agnostic file.
Yes. Because everything runs client-side, conversion keeps working without a connection once the page has loaded, and the interface is fully responsive — the editor and preview stack on small screens and the table scrolls horizontally.
Related Tools
Explore More Tools
Go ad-free & unlock power features
- Zero ads, faster focused workflow
- Upload 50MB+ files & batch process
- Priority AI type & schema generation