如何将一个混合或全大写的表名从一个PostgreSQL数据库复制到另一个数据库?

4

我在将一个完全大写的表从一个Postgres数据库复制到另一个数据库时遇到了一些困难。

根据这里和其他地方的帖子,我一直在使用以下命令行语法:

pg_dump -t tablename fromdb | psql todb

数据库名称也都是大写的,尽管这似乎没有成为问题。

以下是我需要运行的命令:

pg_dump -t "COMMS" "DB_V1" | psql "DB_V2"

在双引号内(作为测试用例),转移所有小写字母名称的表格非常完美,并且没有数据库名称全部为大写字母和双引号的问题。 但是,当尝试传输全大写表名时,它无法找到它。 "pg_dump:未找到匹配的表格"

根据其他地方的阅读,我已经尝试使用'"COMMS"',以及不同的排列顺序,只是为了看看它们是否有效。 基于那个阅读,我真的期望单引号中的双引号可以工作。

我是否在研究中漏掉了某些既定做法? 我意识到可能存在一个非常简单的答案。 提前致谢!


你只需要将引号传递给shell并进入PostgreSQL吗?例如:pg_dump -t '"COMMS"' '"DB_V1"' | psql '"DB_V2"' - mu is too short
正如我在帖子中提到的那样,我已经尝试过了。有趣的是,只要用双引号将包含表的数据库名称和要复制到的数据库名称包含在大写字母中,并且表名为小写字母,它就可以正常工作。将单引号放在双引号外似乎没有改变任何东西... - ZFlyGuy
好的,抱歉,我漏掉了'"COMMS'"这部分。 - mu is too short
值得注意的是,这种从启用了PostGIS的数据库复制表格到另一个启用了PostGIS的数据库的方法似乎不会复制所复制表格的几何值。 - ZFlyGuy
pg_dump 版本?'"tablename"' 应该可以工作... - Craig Ringer
嗨,我正在阅读这篇博客文章,它还涵盖了特定模式/特定表名/混合大小写设置的组合:http://sptl.eu/2015/01/03/backup-a-mixed-case-table-from-a-specific-schema-via-pg_dump/ - sal
1个回答

5

在 Windows 命令行中,在双引号之前添加反斜杠可正常工作。

pg_dump -t \"TableName\" MYDB

1
这也适用于基于Linux的系统。在CentOS 7上进行了测试。 - user3079474

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接