Thread: BUG #17630: pg_dump error

BUG #17630: pg_dump error

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      17630
Logged by:          camel
Email address:      killerwzb@163.com
PostgreSQL version: 14.5
Operating system:   centos7
Description:

Hi guys:
    I create table with a upper name ,it is "TABLE2" .I use pg_dump to dump
the table to a custom file,but i get some error.

The first step:
[wangzhibin@localhost bin]$ ./psql -U postgres
psql (16devel)
Type "help" for help.

postgres=# create table "TABLE2" (t1 int);
CREATE TABLE

The second step:
[wangzhibin@localhost bin]$ ./pg_dump --verbose --host localhost --port 5432
--username postgres --dbname=postgres --format custom --file ~/db.bak
--table TABLE2
pg_dump: last built-in OID is 16383
pg_dump: error: no matching tables were found
[wangzhibin@localhost bin]$ ./pg_dump --verbose --host localhost --port 5432
--username postgres --dbname=postgres --format custom --file ~/db.bak
--table "TABLE2"
pg_dump: last built-in OID is 16383
pg_dump: error: no matching tables were found
[wangzhibin@localhost bin]$ ./pg_dump --verbose --host localhost --port 5432
--username postgres --dbname=postgres --format custom --file ~/db.bak
--table "table2"
pg_dump: last built-in OID is 16383
pg_dump: error: no matching tables were found


Re: BUG #17630: pg_dump error

From
Christophe Pettus
Date:

> On Oct 9, 2022, at 02:22, PG Bug reporting form <noreply@postgresql.org> wrote:
>    I create table with a upper name ,it is "TABLE2" .I use pg_dump to dump
> the table to a custom file,but i get some error.

It's not a bug, but it's kind of an annoying situation.  The double quotes on the command line just delimit the name of
thetable, but the shell strips them off (as you would expect), so pg_dump just gets the bare name.  You have to add
separate,escaped double-quotes, since the table name requires them: 

xof=# create table "TABLE2" (i integer);
CREATE TABLE
xof=#
\q
xof$ pg_dump --dbname=xof --table "TABLE2" > /dev/null
pg_dump: error: no matching tables were found
xof$ pg_dump --dbname=xof --table "\"TABLE2\"" > /dev/null
xof$




Re: BUG #17630: pg_dump error

From
Tom Lane
Date:
Christophe Pettus <xof@thebuild.com> writes:
>> On Oct 9, 2022, at 02:22, PG Bug reporting form <noreply@postgresql.org> wrote:
>> I create table with a upper name ,it is "TABLE2" .I use pg_dump to dump
>> the table to a custom file,but i get some error.

> It's not a bug, but it's kind of an annoying situation.  The double quotes on the command line just delimit the name
ofthe table, but the shell strips them off (as you would expect), so pg_dump just gets the bare name.  You have to add
separate,escaped double-quotes, since the table name requires them: 

Another way with slightly fewer keystrokes is

    pg_dump ... --table '"TABLE2"'

Of course, if you're also in the habit of putting single-quotes in
your table names, that'll still need some work.  The main point is
that there are two layers of quoting that you have to deal with:
the shell's, and then SQL's.

            regards, tom lane