无法创建单个表数据的备份

Den*_*man 3 postgresql postgresql-9.6

我尝试使用一个命令:

\n\n
pg_dump -U postgres -d "ProjectsManagement" -t public.Statuses -a > path\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不起作用并输出:

\n\n
\n

pg_dump:\xd1\x81\xd0\xbe\xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd1\x8e \xd1\x89\xd0\xb8\xd0\xb5 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b \xd0\xbd\xd0\xb5 \xd0 \xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd\xd1\x8b(英语:未找到表格)

\n
\n\n

但这个表是存在的,并且没有-t参数它就可以工作。

\n\n

怎么了?

\n\n

截屏

\n\n

\\l输出:

\n\n
\n

项目管理 | postgres | UTF8 | 俄罗斯_俄罗斯.1251 |\n 俄罗斯_俄罗斯.1251 |

\n
\n

McN*_*ets 5

只需查看 postgres 文档和示例,我就发现了这个特定案例:

要在 -t 和相关开关中指定大写或混合大小写的名称,您需要双引号该名称;否则它将被折叠为小写(请参阅模式)。但双引号对于 shell 来说是特殊的,因此必须反过来将它们加引号。因此,要转储具有混合大小写名称的单个表,您需要类似以下内容:

$ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql
Run Code Online (Sandbox Code Playgroud)

你可以在这里读到它。