{"id":43239,"date":"2026-02-27T11:51:38","date_gmt":"2026-02-27T10:51:38","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=43239"},"modified":"2026-02-27T11:51:38","modified_gmt":"2026-02-27T10:51:38","slug":"postgresql-19-pg_dumpall-in-binary-format","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/","title":{"rendered":"PostgreSQL 19: pg_dumpall in binary format"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">One of the limitation of <a href=\"https:\/\/www.postgresql.org\/docs\/18\/app-pg-dumpall.html\" target=\"_blank\" rel=\"noreferrer noopener\">pg_dumpall<\/a> up to PostgreSQL version 18 is, that you can only dump in text mode. While <a href=\"https:\/\/www.postgresql.org\/docs\/18\/app-pgdump.html\" target=\"_blank\" rel=\"noreferrer noopener\">pg_dump<\/a> can dump in various formats (plain,custom,tar and directory) since ages. pg_dump was always limited to text mode. This will change with PostgreSQL 19 because <a href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commitdiff;h=763aaa06f03401584d07db71256fc0ab47235cce\" target=\"_blank\" rel=\"noreferrer noopener\">this was committed recently<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The default is still plain text but now you have the same options as pg_dump:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_dumpall --help | grep -A 1 -w format\n  -F, --format=c|d|t|p         output file format (custom, directory, tar,\n                               plain text (default))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Lets assume we have have five user databases like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] for i in {1..5}; do createdb ${i}; done\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -l\n                                                        List of databases\n   Name    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    |   Locale    | ICU Rules |   Access privileges   \n-----------+----------+----------+-----------------+-------------+-------------+-------------+-----------+-----------------------\n 1         | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n 2         | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n 3         | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n 4         | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n 5         | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n postgres  | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | \n template0 | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | =c\/postgres          +\n           |          |          |                 |             |             |             |           | postgres=CTc\/postgres\n template1 | postgres | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US-x-icu |           | =c\/postgres          +\n           |          |          |                 |             |             |             |           | postgres=CTc\/postgre\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">&#8230; and a table in each:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] for i in {1..5}; do psql -c &quot;create table t${i} as select * from generate_series(1,100)&quot; ${i}; done\nSELECT 100\nSELECT 100\nSELECT 100\nSELECT 100\nSELECT 100\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Dumping that using the default mode of pg_dumpall results in a plain text as usual:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_dumpall &amp;gt; dmp.sql\npostgres@:\/home\/postgres\/ &#x5B;pgdev] head -50 dmp.sql | egrep -v &quot;^$&quot;\npostgres@:\/home\/postgres\/ &#x5B;pgdev] head -50 dmp.sql | egrep -v &quot;^$|--&quot;\n\\restrict fkHQ08xl5cQnk99WM6prphaZBPdqlARNru7uAdgFRFMUJm7RdeI6Elk8zoOr8mg\nSET default_transaction_read_only = off;\nSET client_encoding = &#039;UTF8&#039;;\nSET standard_conforming_strings = on;\nCREATE ROLE postgres;\nALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS;\n\\unrestrict fkHQ08xl5cQnk99WM6prphaZBPdqlARNru7uAdgFRFMUJm7RdeI6Elk8zoOr8mg\n\\connect template1\n\\restrict EFrJ3U9GH8T5SSHUVhWam0FHhJyxp1pAMXSTXTLVaiHayK4ASUZzweTUywMJbmq\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Starting with PostgreSQL 19 this can be changed to any of the other supported formats. The tar format will give you a directory structure like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,9]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_dumpall --format=t -f dmp_tar\npostgres@:\/home\/postgres\/ &#x5B;pgdev] ls -la dmp_tar\/\ntotal 12\ndrwx------. 1 postgres postgres   46 Feb 27 08:53 .\ndrwx------. 1 postgres postgres  436 Feb 27 08:53 ..\ndrwx------. 1 postgres postgres  110 Feb 27 08:53 databases\n-rw-r--r--. 1 postgres postgres  448 Feb 27 08:53 map.dat\n-rw-r--r--. 1 postgres postgres 1810 Feb 27 08:53 toc.glo\npostgres@:\/home\/postgres\/ &#x5B;pgdev] ls -la dmp_tar\/databases\/\ntotal 56\ndrwx------. 1 postgres postgres  110 Feb 27 08:53 .\ndrwx------. 1 postgres postgres   46 Feb 27 08:53 ..\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 16388.tar\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 16389.tar\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 16390.tar\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 16391.tar\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 16392.tar\n-rw-r--r--. 1 postgres postgres 6656 Feb 27 08:53 1.tar\n-rw-r--r--. 1 postgres postgres 5632 Feb 27 08:53 5.tar\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The &#8220;map&#8221; file maps OIDs to database names:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] cat dmp_tar\/map.dat \n#################################################################\n# map.dat\n#\n# This file maps oids to database names\n#\n# pg_restore will restore all the databases listed here, unless\n# otherwise excluded. You can also inhibit restoration of a\n# database by removing the line or commenting out the line with# a # mark.\n#################################################################\n1 template1\n16388 1\n16389 2\n16390 3\n16391 4\n16392 5\n5 postgres\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The &#8220;toc&#8221; file, as usual is the table of contents which can be listed with <a href=\"https:\/\/www.postgresql.org\/docs\/18\/app-pgrestore.html\" target=\"_blank\" rel=\"noreferrer noopener\">pg_restore<\/a>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_restore -l dmp_tar\/toc.glo\n;\n; Archive created at 2026-02-27 08:53:53 CET\n;     dbname: postgres\n;     TOC Entries: 10\n;     Compression: none\n;     Dump Version: 1.16-0\n;     Format: CUSTOM\n;     Integer: 4 bytes\n;     Offset: 8 bytes\n;     Dumped by pg_dump version: 19devel dbi services build\n;\n;\n; Selected TOC Entries:\n;\n1; 0 0 default_transaction_read_only - default_transaction_read_only \n2; 0 0 client_encoding - client_encoding \n3; 0 0 standard_conforming_strings - standard_conforming_strings \n4; 0 0 DROP_GLOBAL - DATABASE &quot;1&quot; \n5; 0 0 DROP_GLOBAL - DATABASE &quot;2&quot; \n6; 0 0 DROP_GLOBAL - DATABASE &quot;3&quot; \n7; 0 0 DROP_GLOBAL - DATABASE &quot;4&quot; \n8; 0 0 DROP_GLOBAL - DATABASE &quot;5&quot; \n9; 0 0 DROP_GLOBAL - ROLE postgres \n10; 0 0 ROLE - ROLE postgres \n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This comes with the possibility (as with the plain text format) to restore individual databases out of this global dump, or to reload global object only:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,16]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_restore --globals-only dmp_tar\/ -d postgres --verbosepg_restore: connecting to database for restore\npg_restore: executing SELECT pg_catalog.set_config(&#039;search_path&#039;, &#039;&#039;, false);\npg_restore: creating default_transaction_read_only &quot;default_transaction_read_only&quot;\npg_restore: creating client_encoding &quot;client_encoding&quot;\npg_restore: creating standard_conforming_strings &quot;standard_conforming_strings&quot;\npg_restore: creating ROLE &quot;ROLE postgres&quot;\npg_restore: while PROCESSING TOC:\npg_restore: from TOC entry 10; 0 0 ROLE ROLE postgres (no owner)\npg_restore: error: could not execute query: ERROR:  role &quot;postgres&quot; already exists\nCommand was: CREATE ROLE postgres;\nALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS;\n\npg_restore: database restoring skipped because option -g\/--globals-only was specified\npg_restore: warning: errors ignored on restore: 1\n\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_restore --globals-only dmp_tar\/ -d postgres --verbosepg_restore: connecting to database for restore\npg_restore: executing SELECT pg_catalog.set_config(&#039;search_path&#039;, &#039;&#039;, false);\npg_restore: creating default_transaction_read_only &quot;default_transaction_read_only&quot;\npg_restore: creating client_encoding &quot;client_encoding&quot;\npg_restore: creating standard_conforming_strings &quot;standard_conforming_strings&quot;\npg_restore: creating ROLE &quot;ROLE postgres&quot;\npg_restore: while PROCESSING TOC:\npg_restore: from TOC entry 10; 0 0 ROLE ROLE postgres (no owner)\npg_restore: error: could not execute query: ERROR:  role &quot;postgres&quot; already exists\nCommand was: CREATE ROLE postgres;\nALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS;\n\npg_restore: database restoring skipped because option -g\/--globals-only was specified\npg_restore: warning: errors ignored on restore: 1\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Another option is to run multiple restore processes to load databases in parallel. Nice to have that option and as usual: Thanks to all involved.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the limitation of pg_dumpall up to PostgreSQL version 18 is, that you can only dump in text mode. While pg_dump can dump in various formats (plain,custom,tar and directory) since ages. pg_dump was always limited to text mode. This will change with PostgreSQL 19 because this was committed recently. The default is still plain&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4133],"tags":[],"class_list":["post-43239","post","type-post","status-publish","format-standard","hentry","category-database"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 19: pg_dumpall in binary format - dbi services | Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 19: pg_dumpall in binary format\" \/>\n<meta property=\"og:description\" content=\"One of the limitation of pg_dumpall up to PostgreSQL version 18 is, that you can only dump in text mode. While pg_dump can dump in various formats (plain,custom,tar and directory) since ages. pg_dump was always limited to text mode. This will change with PostgreSQL 19 because this was committed recently. The default is still plain&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-27T10:51:38+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"PostgreSQL 19: pg_dumpall in binary format\",\"datePublished\":\"2026-02-27T10:51:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/\"},\"wordCount\":207,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"articleSection\":[\"Database\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/\",\"name\":\"PostgreSQL 19: pg_dumpall in binary format - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-02-27T10:51:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-19-pg_dumpall-in-binary-format\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 19: pg_dumpall in binary format\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"caption\":\"Open source Team\"},\"description\":\"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 19: pg_dumpall in binary format - dbi services | Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 19: pg_dumpall in binary format","og_description":"One of the limitation of pg_dumpall up to PostgreSQL version 18 is, that you can only dump in text mode. While pg_dump can dump in various formats (plain,custom,tar and directory) since ages. pg_dump was always limited to text mode. This will change with PostgreSQL 19 because this was committed recently. The default is still plain&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2026-02-27T10:51:38+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Open source Team","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"PostgreSQL 19: pg_dumpall in binary format","datePublished":"2026-02-27T10:51:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/"},"wordCount":207,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"articleSection":["Database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/","name":"PostgreSQL 19: pg_dumpall in binary format - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2026-02-27T10:51:38+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-pg_dumpall-in-binary-format\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 19: pg_dumpall in binary format"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","caption":"Open source Team"},"description":"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.","url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=43239"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43239\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=43239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=43239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=43239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}