Online Tool Store Online Tool Store

SQL Dump Splitter

Split a large .sql or .sql.gz dump into loadable chunks at statement-safe boundaries, keeping stored procedures and triggers intact, with size warnings shown.

🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.

Choose a .sql file (.sql.gz also works). It is read locally and never uploaded.

A large single statement may exceed this target to stay valid.

How the SQL Dump Splitter works

  1. Add the dump file - a plain .sql or a compressed .sql.gz both work, and it is read in the page, so nothing is uploaded.
  2. Choose a chunk size your import tool or hosting limit can accept.
  3. Load the files in numeric order. The splitter preserves the dump's original statement order and keeps any stored procedure, trigger, or function intact, so review any schema, data, and constraint sections before importing.

FAQ

Why must constraints load last?

Because data files reference each other. Loading foreign keys before the referenced rows exist fails, so the standard order is schema, then data, then constraints and indexes.

Can I split anywhere in the file?

No - splitting mid-statement produces files that are individually invalid SQL. Splits must land on statement boundaries, which is why a naive line-count split usually breaks.

Does it handle stored procedures, triggers, and functions?

Yes. A dump that changes the statement delimiter with DELIMITER ;; to define a routine is kept as one unsplittable block from the opening DELIMITER line to the closing one, so a chunk boundary never lands inside a procedure body or between DELIMITER ;; and the body that depends on it.

Can I use a compressed .sql.gz dump?

Yes - drop the .gz file directly and it is decompressed in your browser before splitting, using the same standard gzip format the gzip command and mysqldump | gzip produce. Nothing is uploaded or converted server-side.

Why is my import still slow after splitting?

Splitting solves size limits, not speed. For speed, load data before creating indexes and wrap batches in transactions.

Does this only work with MySQL dumps?

No. Splitting happens generically at statement-ending semicolons, so a PostgreSQL or other SQL dump splits safely too. The MySQL-specific DELIMITER handling only activates when a dump actually uses that syntax for stored procedures or triggers - it is a no-op otherwise.

How do I choose a chunk size?

Match it to whatever is rejecting the whole file - phpMyAdmin and many hosts cap uploads anywhere from a few MB to a few hundred MB, so check that limit and pick a chunk size safely under it. Smaller chunks just mean more files to import in order, not a downside beyond that.

How we compare

FeatureOnline Tool StoreA CLI scriptAn IDE plugin
Statement-safe boundaries
Preserves source statement order Sometimes
No upload of the dump
Works past hosting upload caps Depends
Keeps stored procedures/triggers intact across a DELIMITER change Only if the script is DELIMITER-aware
Accepts a compressed .sql.gz dump directly Confirmed on sqlsplit.com; a plain script usually needs it decompressed first

SQL Dump Splitter helps when an import fails on file size - it splits where SQL allows, decompresses a gzipped dump for you, and keeps each chunk statement-safe, stored procedures included.

Explore related tools

Embed this tool

Paste this on your own site — it stays free, and every file still stays in your visitor's browser, not yours or ours.