从 Openedge 程序读取 PostgreSQL 表

问题描述 投票:0回答:2

我需要编写一个 Openedge 11.6.4 ABL 程序来自动:

  • 连接到 PostgreSQL 数据库。
  • 阅读一些信息并将其写入我的 OpenEdge 数据库中。
  • 断开与 PostgreSQL 的连接。

我的问题在连接部分。

这可能吗?

postgresql database-connection openedge progress-4gl progress-db
2个回答
3
投票

您可以使用 ADODB 和 ODBC 驱动程序

例子:

DEFINE VARIABLE objAdoCon   AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE objAdoCmd   AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE objAdoRS    AS COM-HANDLE NO-UNDO.

DEFINE VARIABLE cAdoSql AS CHARACTER   NO-UNDO.
DEFINE VARIABLE cField AS CHARACTER   NO-UNDO.

/* ODBC Connection */
CREATE "ADODB.Connection" objAdoCon.

objAdoCon:ConnectionString = "Provider=PostgreSQL OLE DB;" +
                             "Data Source=myServerAddress;location=myDataBase;User ID=myUsername;password=myPassword".

objAdoCon:OPEN(,,,).  /* makes the connection to the datasource */

/* RecordSet */
CREATE "ADODB.RecordSet"  objAdoRS.
objAdoRS:CursorLocation = 3.  // Client
objAdoRS:CursorType     = 0.  // ForwardOnly
objAdoRS:locktype       = 3.  // LockOptimistic

cAdoSql = "SELECT * FROM postgreTable".

objAdoRS:OPEN (cAdoSql,objAdoCon,,,).

DO WHILE NOT objAdoRS:eof:

 cField = objAdoRS:FIELDS("FieldFromPostgreTable"):VALUE. 
 
 CREATE Customer.
 ASSIGN
    Customer.NAME = cField.
 
 objAdoRS:MoveNext.
 
END.
   

FINALLY:  
    

   objAdoRS:CLOSE NO-ERROR.
   objAdoCon:CLOSE NO-ERROR.
   RELEASE OBJECT objAdoCon NO-ERROR.
   RELEASE OBJECT objAdoRS  NO-ERROR.
   ASSIGN objAdoCon = ?.
   ASSIGN objAdoRS  = ?.     
          
END FINALLY. 

其他一些代码示例:

https://community.progress.com/s/question/0D74Q000007tLORSA2/detail https://www.w3schools.com/asp/ado_connect.asp


2
投票

由于您仍在使用 OpenEdge 11.6(非常旧),您仍然可以使用 OpenEdge DataServer for ODBC。此功能已从 OpenEdge 11.7 中退出:

https://community.progress.com/s/article/Frequently-asked-questions-regarding-the-DataServer-for-ODBC-phaseout

“OpenEdge 11.6 是带有 DataServer for ODBC 引擎的最后一个 OpenEdge 版本。”

要使用数据服务器,您需要从 Progress Software 获得此产品的许可证。

根据用例和导入频率,从 PostgresSQL 导出到纯文本文件、XML 或 JSON 并使用 ABL 程序导入可能更容易。

如果您需要频繁且可能双向的复制,我更愿意编写一个 Web 服务(使用任何语言)连接到您的 PostgreSQL 数据库并使用 REST 公开数据。

© www.soinside.com 2019 - 2024. All rights reserved.