从PostgreSQL与Informix进行通信?

时间:2012-09-02 08:39:45

标签: postgresql informix

请帮我设置从PostgreSQL到Informix的连接(两者的最新版本)。我希望能够从PostgreSQL对Informix执行查询。我正在寻找一种解决方案,不需要为每个查询导出数据(从Informix)和导入(到PostgreSQL)。

我是PostgreSQL的新手,需要详细说明。

2 个答案:

答案 0 :(得分:2)

您还没有说明您使用的是哪个版本。有一些限制需要注意,但有很多选择。

既然你说这是导入/导出,我会假设只读选项是不够的。这排除了PostgreSQL 9.1的外部数据包装系统。

根据您的版本,David Fetter的DBI-Link可能适合您的需求,因为它可以在远程表上执行查询(请参阅https://github.com/davidfetter/DBI-Link)。它暂时没有更新,但实现应该非常稳定并且可以跨版本使用。如果失败,您可以使用不受信任的语言(PL / PythonU,PL / PerlU等)编写存储过程以连接到Informix并在那里运行查询。请注意,在这种情况下,您将遇到有关事务处理的限制,因此您可能希望使用延迟约束触发器对其他表运行任何查询,以便一切都在提交时运行。

编辑:我发现了一种更清洁的方式:使用外国数据包装进行导入,使用单独的客户端应用程序进行导出。

在这种方法中,您将拥有四个基本组件,但这将是松散耦合的,并受到适当的事务控制。如果需要,您甚至可以使用两阶段提交。这四个组成部分(这里没有提供完整的工作示例,但至少是一个路线图):

  1. 用于数据导入的外部数据包装器,允许您查看Informix中的数据。
  2. 要导出的数据视图。
  3. 管理导出方面的外部应用程序,使用您选择的语言编写。这会在LISTEN export_informix;
  4. 等频道上收听
  5. 触发基础表,这些表可以查看要导出的数据,其中会引发NOTIFY export_informix
  6. 通知在提交时已经失效,因此基本上您通过这种方式有两个阶段进行交易:

    1. 在PostgreSQL中写入数据,标记要导出的数据。提交。
    2. 从PostgreSQL读取数据,导出到Informix。承诺双方(TPC?)。

答案 1 :(得分:2)

正如克里斯特拉弗斯所说,你想要做的事情并不容易。

理论上,如果您正在使用Informix并且需要访问PostgreSQL,您可以(购买并)使用Enterprise Gateway Manager(EGM)并使用PostgreSQL的ODBC驱动程序来允许Informix连接到PostgreSQL。在实际访问PostgreSQL时,EGM将尽最大努力看起来是另一个Informix数据库。 (我没有验证PostgreSQL是否受支持,但EGM基本上需要一个ODBC驱动程序才能工作,所以不应该有任何问题 - 可能是“着名的遗言”。)这将包括2PC仿真(两阶段)承诺);不完美,但适度接近。

对于逆向连接(使用PostgreSQL并连接到Informix),您需要查看PostgreSQL工具套件或其他来源。