Обсуждение: BUG #17630: pg_dump error

Поиск
Список
Период
Сортировка

BUG #17630: pg_dump error

От
PG Bug reporting form
Дата:
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

От
Christophe Pettus
Дата:

> 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

От
Tom Lane
Дата:
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