Why does the pg_dumpall command have a database option?

Started by Nonealmost 7 years ago5 messagesgeneral
Jump to latest
#1None
espressobeanies@gmail.com

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,

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: None (#1)
Re: Why does the pg_dumpall command have a database option?

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

#3None
espressobeanies@gmail.com
In reply to: Adrian Klaver (#2)
Re: Why does the pg_dumpall command have a database option?

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:

Show quoted text

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

#4Ray O'Donnell
ray@rodonnell.ie
In reply to: None (#3)
Re: Why does the pg_dumpall command have a database option?

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

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: None (#3)
Re: Why does the pg_dumpall command have a database option?

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