{"id":45753,"date":"2026-11-03T03:30:00","date_gmt":"2026-11-03T03:30:00","guid":{"rendered":"https:\/\/www.withdata.com\/blog\/?p=45753"},"modified":"2026-11-03T04:15:56","modified_gmt":"2026-11-03T04:15:56","slug":"dbcopier-3-1-released","status":"publish","type":"post","link":"https:\/\/www.withdata.com\/blog\/pr\/dbcopier-3-1-released.html","title":{"rendered":"DBCopier 3.1 Released: Automate Database Copies from the Command Line"},"content":{"rendered":"<p>November 3, 2026 \u2014 Withdata Software announces <strong><a href=\"https:\/\/www.withdata.com\/db-copier\/\">DBCopier 3.1<\/a><\/strong>, a cross-platform desktop tool for copying data between databases. This release makes the copy itself a first-class command line job: one command describes the whole copy, a dry run shows the plan before anything is written, and a batch file or a scheduler can trust the exit code.<\/p>\n<h2>What\u2019s New in DBCopier 3.1<\/h2>\n<h3>1. A Complete Command Line for Copy Jobs<\/h3>\n<p>One command describes the copy \u2014 source, target, tables and the load type:<\/p>\n<p><code>DBCopier copy --from=\"SQLite:shop.db\" --from-table=customers --to=\"MySQL:user:pass@host:3306\/shop\" --to-table=customers --loadtype=upsert<\/code><\/p>\n<ul>\n<li>The table form (one table, several tables, or N tables into N tables), and the query form with <code>--from-sql<\/code> or <code>--from-sql-file<\/code>.<\/li>\n<li><code>--set=Section.Name=Value<\/code> overrides any value of the session, and <code>--var<\/code> \/ <code>--var-file<\/code> expand <code>${...}<\/code> variables (dates, environment, secrets) inside it.<\/li>\n<li>A dry run that prints the plan \u2014 the target table, the field map risks and the row count of every item \u2014 as <code>--dry-run<\/code>, <code>--json<\/code> or <code>--report=plan.json<\/code>.<\/li>\n<li>The whole contract in <code>--help<\/code>: <code>--version<\/code>, <code>schema<\/code>, <code>init<\/code>, <code>describe<\/code>, <code>schedule<\/code>, <code>capabilities<\/code>, <code>pipeline<\/code> and <code>mcp<\/code>.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.withdata.com\/images\/db-copier\/command-line.png\" alt=\"DBCopier 3.1 \u2013 a database copy job on the command line\" width=\"320\" height=\"150\" style=\"max-width:100%; height:auto; display:block;\" \/><\/p>\n<h3>2. Exit Codes a Batch File Can Trust<\/h3>\n<p>A copy that wrote nothing, or only some of the rows, is not a successful run. DBCopier 3.1 exits non-zero in both cases, and the log says how many rows were written and how many failed \u2014 so a nightly job, a batch file or a scheduler can tell a clean copy from a broken one without reading the log first.<\/p>\n<h3>3. GTK3 Linux Packages and Dialog Polish<\/h3>\n<ul>\n<li>The Linux builds use GTK3, with apt and rpm repositories, so DBCopier runs on current Linux desktops.<\/li>\n<li>The logon dialog is cleaner: Ok \/ Cancel on the right, and a connection error in a popup instead of a memo at the bottom.<\/li>\n<li>The start-a-task dialog shows saved sessions as speed buttons and no longer overlaps controls on GTK3.<\/li>\n<li>The page tabs show the source and destination type of the current task.<\/li>\n<li>On macOS, the wizard now loads its steps when it is started from the application\u2019s main form, and Back no longer reloads the step.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.withdata.com\/images\/db-copier\/db-copier.png\" alt=\"DBCopier 3.1 \u2013 database copy on Windows, Linux and macOS\" width=\"954\" height=\"702\" style=\"max-width:100%; height:auto; display:block;\" \/><\/p>\n<h3>4. Other Improvements<\/h3>\n<p>Some minor bug fixes and improvements.<\/p>\n<h2>About DBCopier<\/h2>\n<p><a href=\"https:\/\/www.withdata.com\/db-copier\/\">DBCopier<\/a> copies data between databases, fast and locally, without coding.<\/p>\n<ul>\n<li>Copy a table, several tables, a query result, or a whole database between databases<\/li>\n<li>Over 20 supported databases: Access, MySQL, Oracle, PostgreSQL, SQL Server, SQLite, DB2, Redshift, Azure, DBF and more<\/li>\n<li>Direct copy, update and upsert; similar tables can be merged into one target table<\/li>\n<li>Field mapping with risk checks, preview plan, and saved sessions for repeated jobs<\/li>\n<li>Batch copy, command line, and scheduled tasks for automation<\/li>\n<li>Cross-platform: Windows, Linux, macOS<\/li>\n<li>Fully local offline processing; no data uploaded to cloud servers<\/li>\n<\/ul>\n<h2>Upgrade Today<\/h2>\n<p><a href=\"https:\/\/www.withdata.com\/db-copier\/\">DBCopier 3.1<\/a> is ready for download: <a href=\"https:\/\/www.withdata.com\/db-copier\/download.html\">https:\/\/www.withdata.com\/db-copier\/download.html<\/a>. Existing users may update directly. New users can download a free trial to try the command line and the dry-run plan.<\/p>\n<p>Withdata Software continues optimizing DBCopier for real-world database copy and migration scenarios based on user feedback.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>November 3, 2026 \u2014 Withdata Software announces DBCopier 3.1, a cross-platform desktop tool for copying data between databases. This release makes the copy itself a first-class command line job: one command describes the whole copy, a dry run shows the plan before anything is written, and a batch file or a scheduler can trust the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69],"tags":[13841,73,13769,13762,13760,13770],"class_list":["post-45753","post","type-post","status-publish","format-standard","hentry","category-pr","tag-automation","tag-command-line","tag-database-copy","tag-database-migration","tag-dba","tag-dbcopier"],"_links":{"self":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45753","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=45753"}],"version-history":[{"count":1,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45753\/revisions"}],"predecessor-version":[{"id":45754,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45753\/revisions\/45754"}],"wp:attachment":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/media?parent=45753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/categories?post=45753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/tags?post=45753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}