Thread: Why does the pg_dumpall command have a database option?
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,
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
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
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
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