文章目录
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:9.0.4,6.0.4,4.5.10
症状
瀚高数据库中,用户使用大写字母创建了表名,使用pg_dump导出表的过程中报:pg_dump: error: no matching tables were found
highgo@Linux80-A \~$ pg_dump -U sysdba -d highgo -t test."TEST" -Fc -f 1.dmp
pg_dump: error: no matching tables were found
问题原因
pg_dump在处理表名时对双引号有特殊处理,导致表名称的双引号位置发生变化
解决方案
对于大写的表名或模式名,使用单引号去注释下双引号便可解决。
示例一:只有表名大写
highgo@Linux80-A \~$ pg_dump -U highgo -d highgo -t test.'"TEST"' -Fc -f 1.dmp
示例二:模式名及表名均大写
highgo@Linux80-A \~ pg_dump -U sysdba -d highgo -t '"TEST"'.'"TEST"' -Fc -f 1.dmp 或 \[highgo@Linux80-A \~\] pg_dump -U sysdba -d highgo -t '"TEST"."TEST"' -Fc -f 1.dmp
示例三: 只有模式名大写
highgo@Linux80-A \~$ pg_dump -U sysdba -d highgo -t '"TEST"'.test -Fc -f 1.dmp