Thread: Why does the pg_dumpall command have a database option?

Why does the pg_dumpall command have a database option?

From
Espresso Beanies
Date:
I'm trying to see if someone could answer to me why the pg_dumpall command has a database option when it's designed to dump all the databases in a PostgreSQL server instance. I'm only asking because when I create a .pgpass file and try to use the pg_dumpall command, I'm still required to specify a specific database even though the command itself should be targeting all databases. Can anyone explain this to me a bit better?

Thanks,

Re: Why does the pg_dumpall command have a database option?

From
Adrian Klaver
Date:
On 6/20/19 1:03 PM, Espresso Beanies wrote:
> I'm trying to see if someone could answer to me why the pg_dumpall 
> command has a database option when it's designed to dump all the 
> databases in a PostgreSQL server instance. I'm only asking because when 
> I create a .pgpass file and try to use the pg_dumpall command, I'm still 
> required to specify a specific database even though the command itself 
> should be targeting all databases. Can anyone explain this to me a bit 
> better?
> 
> Thanks,

Because pg_dumpall is a client and needs to connect to a database to 
kick start the process/fetch global information:

https://www.postgresql.org/docs/11/app-pg-dumpall.html

-l dbname
--database=dbname

     Specifies the name of the database to connect to for dumping global 
objects and discovering what other databases should be dumped. If not 
specified, the postgres database will be used, and if that does not 
exist, template1 will be used.


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Why does the pg_dumpall command have a database option?

From
Espresso Beanies
Date:
Will it still dump all of the databases or just the one it connects to?

On Thu, Jun 20, 2019 at 4:13 PM Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 6/20/19 1:03 PM, Espresso Beanies wrote:
> I'm trying to see if someone could answer to me why the pg_dumpall
> command has a database option when it's designed to dump all the
> databases in a PostgreSQL server instance. I'm only asking because when
> I create a .pgpass file and try to use the pg_dumpall command, I'm still
> required to specify a specific database even though the command itself
> should be targeting all databases. Can anyone explain this to me a bit
> better?
>
> Thanks,

Because pg_dumpall is a client and needs to connect to a database to
kick start the process/fetch global information:

https://www.postgresql.org/docs/11/app-pg-dumpall.html

-l dbname
--database=dbname

     Specifies the name of the database to connect to for dumping global
objects and discovering what other databases should be dumped. If not
specified, the postgres database will be used, and if that does not
exist, template1 will be used.


--
Adrian Klaver
adrian.klaver@aklaver.com

Re: Why does the pg_dumpall command have a database option?

From
Ray O'Donnell
Date:
On 21/06/2019 14:32, Espresso Beanies wrote:
> Will it still dump all of the databases or just the one it connects to?
> 
> On Thu, Jun 20, 2019 at 4:13 PM Adrian Klaver <adrian.klaver@aklaver.com 
> <mailto:adrian.klaver@aklaver.com>> wrote:
> 
>     On 6/20/19 1:03 PM, Espresso Beanies wrote:
>      > I'm trying to see if someone could answer to me why the pg_dumpall
>      > command has a database option when it's designed to dump all the
>      > databases in a PostgreSQL server instance. I'm only asking
>     because when
>      > I create a .pgpass file and try to use the pg_dumpall command,
>     I'm still
>      > required to specify a specific database even though the command
>     itself
>      > should be targeting all databases. Can anyone explain this to me
>     a bit
>      > better?
>      >
>      > Thanks,
> 
>     Because pg_dumpall is a client and needs to connect to a database to
>     kick start the process/fetch global information:

It'll dump all the databases.

To expand on what Adrian said - PostgreSQL doesn't have a concept of 
connecting just to the server - you always have to connect to a specific 
database as well, no matter what you're actually doing. This is what the 
"postgres" database is mostly used for.

HTH,

Ray.

-- 
Raymond O'Donnell // Galway // Ireland
ray@rodonnell.ie



Re: Why does the pg_dumpall command have a database option?

From
Adrian Klaver
Date:
On 6/21/19 6:32 AM, Espresso Beanies wrote:
> Will it still dump all of the databases or just the one it connects to?

It will dump all the databases. It is just that pg_dumpall is a client 
to the server and therefore needs to connect to a database within the 
cluster to do it's work. That is true of all the programs listed here:

https://www.postgresql.org/docs/11/reference-client.html

Programs that do not have to connect can be found here:

https://www.postgresql.org/docs/11/reference-server.html

> 
> On Thu, Jun 20, 2019 at 4:13 PM Adrian Klaver <adrian.klaver@aklaver.com 
> <mailto:adrian.klaver@aklaver.com>> wrote:
> 
>     On 6/20/19 1:03 PM, Espresso Beanies wrote:
>      > I'm trying to see if someone could answer to me why the pg_dumpall
>      > command has a database option when it's designed to dump all the
>      > databases in a PostgreSQL server instance. I'm only asking
>     because when
>      > I create a .pgpass file and try to use the pg_dumpall command,
>     I'm still
>      > required to specify a specific database even though the command
>     itself
>      > should be targeting all databases. Can anyone explain this to me
>     a bit
>      > better?
>      >
>      > Thanks,
> 
>     Because pg_dumpall is a client and needs to connect to a database to
>     kick start the process/fetch global information:
> 
>     https://www.postgresql.org/docs/11/app-pg-dumpall.html
> 
>     -l dbname
>     --database=dbname
> 
>           Specifies the name of the database to connect to for dumping
>     global
>     objects and discovering what other databases should be dumped. If not
>     specified, the postgres database will be used, and if that does not
>     exist, template1 will be used.
> 
> 
>     -- 
>     Adrian Klaver
>     adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com