我有一台服务器,其中包含大约 7000 个数据库,这些数据库都具有几乎相同的架构。我一直在查询它们并在服务器上的单独数据库中收集有关它们内容的信息。到目前为止,我这样做的方法是使用包装在一些 Python 代码中的 dblink 查询,这些代码遍历所有数据库。当我能够事先构造一个查询并对其进行迭代时,这很好,但如果我只想快速查询其中一个数据库,因为 dblink 查询的构造有些复杂,所以效率不高。
我过去没有使用过 FDW,但我认为从服务器上的每个数据库中导入相关的模式(ta)并将它们作为对象存储在我的主数据库中会更简单。让我感到困惑的是,FDW 文档首先建议创建外部服务器对象和用户映射。由于每个数据库都在同一台服务器上并由同一用户查询,因此我不想从添加一个可能不必要的步骤开始。
所以我的问题是,是否有必要指定服务器和用户映射以在同一服务器上创建与数据库的连接,并且用户在每个数据库中都具有相同的权限?
是的。不创建就不能使用外部服务器。而且您必须为要链接到的每个数据库创建一个,因为
dbname
只能在外部服务器级别指定,而不是在单个外部表级别指定。而且每台服务器都需要自己的用户映射,不能共享。