{"id":45719,"date":"2026-10-19T17:50:44","date_gmt":"2026-10-19T17:50:44","guid":{"rendered":"http:\/\/www.withdata.com\/blog\/?p=45719"},"modified":"2026-10-19T17:52:13","modified_gmt":"2026-10-19T17:52:13","slug":"4-sql-dump-splitters-compared-honestly","status":"publish","type":"post","link":"https:\/\/www.withdata.com\/blog\/sqldumpsplitter\/4-sql-dump-splitters-compared-honestly.html","title":{"rendered":"4 SQL Dump Splitters Compared Honestly (October 2026)"},"content":{"rendered":"<p>A 12 GB <code>mysqldump<\/code> file, a phpMyAdmin upload cap of 2 MB, and a <code>max_allowed_packet<\/code> error halfway through the import. That is the moment most people start looking for a &#8220;SQL dump splitter&#8221; \u2014 and the moment a naive <code>split -l 100000<\/code> makes things worse, because it cuts the dump in the middle of a statement.<\/p>\n<p>Here are the tools that actually come up, what each one is good at, and how to choose without breaking the dump.<\/p>\n<blockquote>\n<p><strong>Disclosure:<\/strong> SQLDumpSplitter is our own product. It gets its own section at the end, after the alternatives. The comparison table includes it so you can see every option in one place.<\/p>\n<\/blockquote>\n<h2>How to judge a SQL splitter for dump files<\/h2>\n<p>Before the tools, the criteria that matter:<\/p>\n<ul>\n<li><strong>Does it split at statement boundaries?<\/strong> A dump contains semicolons inside quoted strings, <code>\/<em> <\/em>\/<\/code> comments, stored procedures and triggers. Splitting every N lines is fast and wrong.<\/li>\n<li><strong>Does it survive the whole file?<\/strong> A browser tab has a memory ceiling; a 20 GB dump is a different problem from a 200 MB one.<\/li>\n<li><strong>Can you split by table or row count, not only by size?<\/strong> Size is what hosting limits care about; tables and rows are what partial restores and test environments care about.<\/li>\n<li><strong>Does it preserve session state?<\/strong> <code>SET<\/code> statements, <code>USE<\/code>, transaction boundaries and <code>COMMIT<\/code> need to stay in every part, or later parts fail on import.<\/li>\n<li><strong>Does it understand your database?<\/strong> MySQL <code>INSERT<\/code> batches, PostgreSQL <code>COPY<\/code> and <code>$$<\/code> bodies, SQL Server <code>GO<\/code>, Oracle PL\/SQL and DB2 are not the same text format.<\/li>\n<li><strong>Can it run unattended?<\/strong> A CLI (or at least a saved task) matters if you split the same kind of dump every week.<\/li>\n<li><strong>Where does the file go?<\/strong> Browser tools that process locally are fine for private dumps; anything that uploads is not.<\/li>\n<\/ul>\n<h2>The comparison<\/h2>\n<table>\n<thead>\n<tr>\n<th>Tool<\/th>\n<th>Best for<\/th>\n<th>Price<\/th>\n<th>Watch out<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.sqlsplit.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>SQLSplit<\/strong><\/a><\/td>\n<td>a quick one-off split, no install<\/td>\n<td><strong>Free<\/strong>, runs in the browser<\/td>\n<td>Large dumps are limited by browser memory<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/minifytool.com\/sql-splitter.html\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MinifyTool SQL File Splitter<\/strong><\/a><\/td>\n<td>statement-aware splitting in a browser tab<\/td>\n<td><strong>Free<\/strong><\/td>\n<td>Browser memory; no table\/row modes<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/sqlsplitter.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>SQLSplitter<\/strong><\/a> (formerly SQLDumpSplitter3)<\/td>\n<td>MySQL\/MariaDB on the desktop<\/td>\n<td>Free up to <strong>10 MB<\/strong> per file, then <strong>\u20ac1.50<\/strong> per file<\/td>\n<td>MySQL\/MariaDB only; pay per large file<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/sqldumpsplitter.net\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>SQL Dump Splittr<\/strong><\/a><\/td>\n<td>MySQL\/PostgreSQL, structure + data files<\/td>\n<td><strong>Free<\/strong> (MIT)<\/td>\n<td>Windows only; last release <strong>1.2 (2017)<\/strong><\/td>\n<\/tr>\n<tr>\n<td><a href=\"\/sql-dump-splitter\/\"><strong>SQLDumpSplitter<\/strong><\/a><\/td>\n<td><strong>10 GB+ dumps, six databases, by table\/size\/rows, CLI<\/strong><\/td>\n<td><strong>$75<\/strong> one-time, 30-day trial<\/td>\n<td>Desktop install<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>The table covers the alternatives; our product is covered below.<\/em><\/p>\n<h3><a href=\"https:\/\/www.sqlsplit.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLSplit<\/a><\/h3>\n<p>The lowest-friction option \u2014 and what most people mean by a <strong>SQL splitter online<\/strong>: open the site, drop in a <code>.sql<\/code> or <code>.sql.gz<\/code> file, choose a target size or line count, and download the parts (individually or as a ZIP). It runs entirely in the browser and its own documentation says the file never leaves the device. It preserves headers, footers and multi-line statements, which is exactly what a line-based <code>split<\/code> does not do.<\/p>\n<p>The honest limit is the browser: SQLSplit&#8217;s documentation says extremely large files can hit browser memory limits. For a WordPress dump of a few hundred MB it is ideal; for a 15 GB warehouse export it is the wrong tool.<\/p>\n<h3><a href=\"https:\/\/minifytool.com\/sql-splitter.html\" target=\"_blank\" rel=\"noopener noreferrer\">MinifyTool SQL File Splitter<\/a><\/h3>\n<p>Another free browser splitter, with a bit more control: maximum size per split, a configurable delimiter, an output prefix and optional comments in each chunk. MinifyTool says it splits at statement boundaries (after semicolons), not blindly by size, and it accepts <code>.sql<\/code> or plain text dumps.<\/p>\n<p>Same trade-off as SQLSplit \u2014 no install, no upload, but the tab is the machine. There is no &#8220;split by table&#8221; or &#8220;split by row count&#8221;, so it solves the upload-limit problem, not the &#8220;give me just these three tables&#8221; problem.<\/p>\n<h3><a href=\"https:\/\/sqlsplitter.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLSplitter<\/a> (formerly SQLDumpSplitter3)<\/h3>\n<p>If you searched for <strong>SQLDumpSplitter3<\/strong>, this is where that project went: same author, renamed, now at version 1.1.0. It is a native desktop tool for <strong>Windows, macOS and Linux<\/strong>, built around a small SQL parser rather than line counting.<\/p>\n<p>It is specifically a <strong>MySQL\/MariaDB<\/strong> splitter, and a careful one: multi-row <code>INSERT<\/code>s are split across files, <code>ON DUPLICATE KEY<\/code> statements are preserved, and <code>SET<\/code>\/<code>USE<\/code> statements are repeated in every part. Files up to <strong>10 MB<\/strong> split for free; after that it is a <strong>one-time \u20ac1.50 per file<\/strong> purchase, and the same file can be split again on any machine. Only a hash of the file is sent for the licence check, not the contents.<\/p>\n<p>If your world is MySQL and you want a desktop tool with a per-file price instead of a subscription, this is a strong, honest option.<\/p>\n<h3><a href=\"https:\/\/sqldumpsplitter.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Dump Splittr<\/a><\/h3>\n<p>A free Windows wizard for <strong>MySQL and PostgreSQL<\/strong> dumps. It splits by target file size, but in a useful way: it writes one <em>structure<\/em> file with the <code>CREATE<\/code>\/<code>ALTER<\/code> statements and separate <em>data<\/em> files with the <code>INSERT<\/code>\/<code>COPY<\/code> statements, so you run the structure first and then the data parts. Very large <code>COPY<\/code> statements are split too.<\/p>\n<p>Two caveats. It is <strong>Windows only<\/strong>, and the changelog still shows <strong>version 1.2 from 2017<\/strong> \u2014 it works, but do not expect new database versions to be actively tested. For PostgreSQL it expects you to run the resulting files with <code>psql<\/code>.<\/p>\n<h3>The native baseline: <code>split<\/code> and phpMyAdmin<\/h3>\n<p><code>split -l 100000 dump.sql part_<\/code> is free and everywhere, and it is also the classic way to corrupt a dump: it splits on lines, not statements, and leaves no headers or <code>COMMIT<\/code> in the parts. phpMyAdmin can export in chunks and import a file under its upload limit, but it cannot split an existing 10 GB dump for you. Use these for a quick look, not for a production restore.<\/p>\n<h2><a href=\"\/sql-dump-splitter\/\">SQLDumpSplitter<\/a> \u2014 for dumps that are too big for the other tools<\/h2>\n<p>SQLDumpSplitter is our desktop splitter for <strong>Windows, Linux and macOS<\/strong> (version 1.4.1). It is built for the case where the dump is measured in gigabytes and the import has to be repeatable:<\/p>\n<ul>\n<li><strong>Three split modes:<\/strong> by <strong>table<\/strong> (extract only the tables you need, with batch selection), by <strong>file size<\/strong> (MB\/GB, with transaction integrity at split points), and by <strong>row count<\/strong> (an exact number of rows per file).<\/li>\n<li><strong>Six databases, not just MySQL:<\/strong> MySQL 5.5\u20139.0+, PostgreSQL 9.x\u201318+, SQL Server 2000\u20132025+, Oracle 8\u201323ai, DB2 9.1\u201312.1+ and SQLite 3.0+ \u2014 with each dialect&#8217;s statements preserved.<\/li>\n<li><strong>Built for large files:<\/strong> multi-threaded processing at GB\/min, and no hard file-size limit beyond your system&#8217;s disk and memory. A 10 GB dump is a normal job, not an edge case.<\/li>\n<li><strong>Syntax validation while splitting:<\/strong> critical statements (<code>CREATE TABLE<\/code>, <code>INSERT<\/code>, <code>COMMIT<\/code>, transaction boundaries) are detected and kept import-ready.<\/li>\n<li><strong>A real CLI:<\/strong> <code>.bat<\/code> on Windows, <code>.sh<\/code> on Linux\/macOS, so scheduled splits and unattended maintenance do not need a GUI.<\/li>\n<\/ul>\n<p>Free 30-day trial, then <strong>$75 one-time<\/strong> (no subscription). See <a href=\"\/sql-dump-splitter\/\">SQLDumpSplitter<\/a> and the <a href=\"\/sql-dump-splitter\/cmd.html\">command-line guide<\/a>.<\/p>\n<h2>Which one to pick<\/h2>\n<ul>\n<li><strong>One-off dump, a few hundred MB, no install:<\/strong> SQLSplit or MinifyTool.<\/li>\n<li><strong>MySQL\/MariaDB, desktop, happy to pay per large file:<\/strong> SQLSplitter (the old SQLDumpSplitter3).<\/li>\n<li><strong>Windows, MySQL or PostgreSQL, structure + data files:<\/strong> SQL Dump Splittr.<\/li>\n<li><strong>10 GB+, several database types, split by table or rows, or run it from a script every week:<\/strong> SQLDumpSplitter.<\/li>\n<\/ul>\n<h2>How to split a large SQL dump with SQLDumpSplitter<\/h2>\n<ol>\n<li>Open SQLDumpSplitter and choose the dump file (or a folder of dumps). It reads the file incrementally, so the whole dump does not have to fit in memory.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"\/images\/sqldumpsplitter\/view-source-sql-dump.png\" alt=\"Choosing a large SQL dump file in SQLDumpSplitter\" style=\"max-width:100%;height:auto;display:block;\" width=\"1162\" height=\"732\" style=\"max-width:100%;height:auto;display:block;\" \/><\/p>\n<ol>\n<li>Pick a split mode. <strong>By table<\/strong> is the one to use for a partial restore or a per-table archive; batch-select the tables you need.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"\/images\/sqldumpsplitter\/split-large-sql-dump-by-tables.png\" alt=\"Splitting a SQL dump by table\" style=\"max-width:100%;height:auto;display:block;\" width=\"722\" height=\"632\" style=\"max-width:100%;height:auto;display:block;\" \/><\/p>\n<ol>\n<li>Or set a target <strong>file size<\/strong> to stay under an upload limit, or a <strong>row count<\/strong> for test data and incremental imports.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"\/images\/sqldumpsplitter\/split-large-sql-dump-by-filesize.png\" alt=\"Splitting a SQL dump by file size\" style=\"max-width:100%;height:auto;display:block;\" width=\"722\" height=\"632\" style=\"max-width:100%;height:auto;display:block;\" loading=\"lazy\" decoding=\"async\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/images\/sqldumpsplitter\/split-large-sql-dump-by-row-count.png\" alt=\"Splitting a SQL dump by row count\" style=\"max-width:100%;height:auto;display:block;\" width=\"722\" height=\"632\" style=\"max-width:100%;height:auto;display:block;\" loading=\"lazy\" decoding=\"async\" \/><\/p>\n<ol>\n<li>Choose the output folder, run the split, and import the parts in order. If this is a recurring job, save the task and run the same configuration from the <a href=\"\/sql-dump-splitter\/cmd.html\">CLI<\/a>.<\/li>\n<\/ol>\n<h2>FAQ<\/h2>\n<h3>Is there a free SQL dump splitter?<\/h3>\n<p>Yes. SQLSplit and MinifyTool are free browser tools, SQLSplitter is free for files up to 10 MB, and SQL Dump Splittr is free Windows software. SQLDumpSplitter is paid, with a 30-day trial.<\/p>\n<h3>How do I split a SQL file that is too large for phpMyAdmin?<\/h3>\n<p>Aim below the upload limit rather than exactly at it \u2014 10\u201320 MB per file is a common starting point on shared hosting. If the dump has foreign keys or triggers, split by table or keep the original order and import the parts sequentially, checking each one before moving on.<\/p>\n<h3>Will splitting break my SQL statements?<\/h3>\n<p>Only if the tool splits by lines instead of statements. A dump can contain semicolons inside strings, comments and stored procedures, so statement-aware splitting matters. All four alternatives above claim to preserve statements; a line-based <code>split<\/code> does not.<\/p>\n<h3>Can I split by table or row count, not just by size?<\/h3>\n<p>SQLDumpSplitter does all three (table, size, row count). SQL Dump Splittr separates structure and data files. SQLSplit, MinifyTool and SQLSplitter are size\/line based.<\/p>\n<h3>Does it work with PostgreSQL, SQL Server or Oracle?<\/h3>\n<p>The browser tools are text splitters and do not understand dialects. SQLSplitter is MySQL\/MariaDB only. SQL Dump Splittr handles MySQL and PostgreSQL. SQLDumpSplitter covers MySQL, PostgreSQL, SQL Server, Oracle, DB2 and SQLite.<\/p>\n<h3>Can I automate splitting on a server?<\/h3>\n<p>SQLDumpSplitter ships a CLI for Windows and Linux\/macOS. The browser tools cannot run unattended, and SQLSplitter and SQL Dump Splittr are GUI applications.<\/p>\n<h2>Final thought<\/h2>\n<p>Pick by the size and the database, not by the feature list: a browser tab is the right answer for a 300 MB WordPress dump, and the wrong answer for a 20 GB migration. If you split the same kind of dump often, or need it by table or row count, a desktop tool with a CLI pays for itself the first time an import fails at 80%.<\/p>\n<hr\/>\n<p><em>Facts checked October 2026. Prices, versions and supported databases change \u2014 verify on each vendor&#8217;s page before buying.<\/em><\/p>\n<p><strong>Sources:<\/strong> <a href=\"https:\/\/www.sqlsplit.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLSplit<\/a> (free, browser; FAQ, accessed 2026-10-20) \u00b7 <a href=\"https:\/\/minifytool.com\/sql-splitter.html\" target=\"_blank\" rel=\"noopener noreferrer\">MinifyTool SQL File Splitter<\/a> (sitemap lastmod 2026-05-02) \u00b7 <a href=\"https:\/\/sqlsplitter.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLSplitter<\/a> (v1.1.0, \u00a9 2024; formerly SQLDumpSplitter3) \u00b7 <a href=\"https:\/\/sqldumpsplitter.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Dump Splittr<\/a> (v1.2, 2017, MIT) \u00b7 <a href=\"https:\/\/www.withdata.com\/sql-dump-splitter\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">SQLDumpSplitter 1.4.1<\/a> and <a href=\"https:\/\/www.withdata.com\/sql-dump-splitter\/\" target=\"_blank\" rel=\"noopener noreferrer\">product page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A 12 GB mysqldump file, a phpMyAdmin upload cap of 2 MB, and a max_allowed_packet error halfway through the import. That is the moment most people start looking for a &#8220;SQL dump splitter&#8221; \u2014 and the moment a naive split -l 100000 makes things worse, because it cuts the dump in the middle of a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4176],"tags":[13810,4058,13809,13811,13759,13812],"class_list":["post-45719","post","type-post","status-publish","format-standard","hentry","category-sqldumpsplitter","tag-split-sql-file","tag-sql-dump-splitter","tag-sql-splitter","tag-sql-splitter-online","tag-sqldumpsplitter","tag-sqldumpsplitter3"],"_links":{"self":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/comments?post=45719"}],"version-history":[{"count":2,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45719\/revisions"}],"predecessor-version":[{"id":45721,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45719\/revisions\/45721"}],"wp:attachment":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/media?parent=45719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/categories?post=45719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/tags?post=45719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}