32

我正在尝试使用 -t 执行特定表的 postgres 转储。但是,该表中有一个大写字母,我得到“未找到匹配的表”。我尝试在表名周围使用引号和双引号,但它们不起作用。如何让 pg 识别大写字母?谢谢!

pg_dump -h hostname dbname -t tableName > pgdump.sql 
4

5 回答 5

64

这是以普通模式转储表的完整命令:

pg_dump --host localhost --port 5432 --username "postgres" --role "postgres"  --format plain  --file "complete_path_file" --table "schema_name.\"table_name\"" "database_name"

或者你可以这样做:

pg_dump -t '"tablename"' database_name > data_base.sql

在此处查看最后一页:文档

于 2012-12-16T20:31:29.570 回答
10

以上解决方案在 Windows 7 x64 下对我不起作用。PostgreSQL 9.4.5。但这最终确实做到了(叹气):

-t "cms.\"FooContents\""

任何一个...

pg_dump.exe -p 8888 --username=user -t "cms.\"FooContents\"" basdb

...或者...

pg_dump.exe -p 8888 --username=user -table="cms.\"FooContents\"" basdb
于 2016-04-19T16:00:45.923 回答
4

在 cmd 窗口中,如果表名包含大写字母,我必须在表名周围加上三个(!)双引号。示例 pg_dump -t """Colors""" 数据库 > database.colors.psql

于 2016-02-25T17:32:51.497 回答
0

这对我有用:

pg_dump -f file.sql -U user -t 'schema.\"Table\"' database
于 2020-03-04T08:25:24.383 回答
0

作为节点脚本的一部分,我必须用单引号和双引号括起来,例如

` ... --table 'public."IndexedData"'`

公认的解决方案在 bash 控制台中工作,但不是作为节点脚本的一部分,仅作为单引号方法。

于 2021-11-24T05:41:20.840 回答