Denis Sologub Asked: 2016-12-14 07:12:02 +0800 CST2016-12-14 07:12:02 +0800 CST 2016-12-14 07:12:02 +0800 CST 无法创建单个表的数据备份 772 我尝试使用命令: pg_dump -U postgres -d "ProjectsManagement" -t public.Statuses -a > path 但它不起作用并输出: pg_dump: соответствующие таблицы не найдены(英语:找不到表) 但是这个表存在并且没有-t参数它就可以工作。 怎么了? \l输出: 项目管理 | 邮政编码 | 编码器 | Russian_Russia.1251 | 俄罗斯 Russian_Russia.1251 | 俄罗斯 postgresql postgresql-9.6 2 个回答 Voted Best Answer McNets 2016-12-14T08:42:15+08:002016-12-14T08:42:15+08:00 只需查看 postgres 文档和示例,我就发现了这个特定案例: 要在 -t 和相关开关中指定大写或混合大小写的名称,您需要将名称加双引号;否则它将被折叠成小写(参见模式)。但是双引号对于 shell 来说是特殊的,所以反过来它们必须被引用。因此,要转储具有混合大小写名称的单个表,您需要类似以下内容: $ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql 你可以在这里阅读它。 ypercubeᵀᴹ 2016-12-14T08:10:22+08:002016-12-14T08:10:22+08:00 如果表的名称不是全部小写,则需要将其双引号,然后将整个 schema.table 单引号,'"Statuses"'或者'public."Statuses"': pg_dump -U postgres -d "ProjectsManagement" -t '"Statuses"' -a > path pg_dump -U postgres -d "ProjectsManagement" -t 'public."Statuses"' -a > path 以上是针对 Linux/Unix 系统的。Windows 命令行在引用和转义特殊字符方面有不同的行为。所以以下(或其中一些)工作,但我不确定哪个是最好和最安全的: -t "public.""Statuses""" -- works -t "public.\"Statuses\"" -- works -t "public.^"Statuses^"" -- NO -t public."""Statuses""" -- works -t public."\"Statuses\"" -- works -t public."^"Statuses^"" -- NO
只需查看 postgres 文档和示例,我就发现了这个特定案例:
你可以在这里阅读它。
如果表的名称不是全部小写,则需要将其双引号,然后将整个 schema.table 单引号,
'"Statuses"'
或者'public."Statuses"'
:以上是针对 Linux/Unix 系统的。Windows 命令行在引用和转义特殊字符方面有不同的行为。所以以下(或其中一些)工作,但我不确定哪个是最好和最安全的: