Обсуждение: BUG #17630: pg_dump error
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
> 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$
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