如何建立与 OpenEdge 数据库的连接
How do I establish a connection to an OpenEdge database
我正在尝试连接到 OpenEdge 数据库,以便我可以对其执行查询。但是,我无法弄清楚如何连接到它来进行这些查询。
到目前为止,我已经尝试制作一个配置文件,但我不确定如何使用它建立与服务器的连接:
"HMMv10": {
"dbConfig": {
"connectionString": "DRIVER={Progress OpenEdge 11.3 Driver}",
"UID": "SYSPROGRESS",
"pwd": "***",
"host": "host.local",
"port": "18210",
"db": "hmm10"
}
}
我不知道该配置文件的用途或工作原理,但在尝试设置第 3 方软件以连接到 OpenEdge 数据库之前,最好使用提供的 OE 工具来验证您有一个正确配置的连接可用于连接。
Progress 提供了一个名为 "sqlexp" 的命令行工具,您可以使用它来测试连接。访问该工具的最简单方法是通过 "proenv" 命令 shell。在 Windows 上,只需打开 "proenv"(它与 "Progress" 程序组中的其他 Progress 命令一起安装)。如果你有 Linux 或 UNIX 安装你 运行 $DLC/bin/proenv.
然后像这样启动 sqlexp(我使用本地数据库名和端口号):
proenv> sqlexp -db s2k -H localhost -S 9500 -user sysprogress -password sysprogress
OpenEdge Release 11.7.2 as of Tue Oct 24 18:20:59 EDT 2017
Connecting user "sysprogress" to URL "jdbc:datadirect:openedge://localhost:9500;databaseName=s2k"... (8920)
SQLExplorer>
如果没有错误并且您收到 SQLExplorer> 提示,这足以表明存在可用的工作连接。
如果您想更进一步并证明您已获得获取数据的权限,请尝试一个简单的 select 语句:
SQLExplorer> select count(*) from pub.customer;
count(*)
--------------------
1117
SQLExplorer> quit;
proenv>
如果这不起作用,那么本地 DBA 没有配置 SQL 访问权限,或者您的 configuration/credentials 不正确,使用其他工具无法解决这个问题。
OpenEdge SQL 注释:
如果您还不知道 - 所有 OpenEdge 数据都是可变长度的。许多 SQL 工具期望字段的宽度是已知的,使用元模式数据来获取默认值。如果本地 DBA 没有通过 "dbtool" 维护该数据,那么您可能会因为数据比预期宽而出错。
sqlexp 要求命令以“;”结尾。
"pub" 模式是 OpenEdge 应用程序表所在的模式。 Table 名称需要 "pub." pre-pended.
Table 和包含“-”的字段名称需要用引号引起来。
我把我发现的答案贴出来,以防其他人正在寻找这个答案。在 NodeJS 中使用 REST API 我使用 npm-odbc 和 OpenEdge odbc 驱动程序连接到数据库。尽管 npm-odbc 包只提到了 Unix,但它实际上在 windows.
上工作
我正在尝试连接到 OpenEdge 数据库,以便我可以对其执行查询。但是,我无法弄清楚如何连接到它来进行这些查询。
到目前为止,我已经尝试制作一个配置文件,但我不确定如何使用它建立与服务器的连接:
"HMMv10": {
"dbConfig": {
"connectionString": "DRIVER={Progress OpenEdge 11.3 Driver}",
"UID": "SYSPROGRESS",
"pwd": "***",
"host": "host.local",
"port": "18210",
"db": "hmm10"
}
}
我不知道该配置文件的用途或工作原理,但在尝试设置第 3 方软件以连接到 OpenEdge 数据库之前,最好使用提供的 OE 工具来验证您有一个正确配置的连接可用于连接。
Progress 提供了一个名为 "sqlexp" 的命令行工具,您可以使用它来测试连接。访问该工具的最简单方法是通过 "proenv" 命令 shell。在 Windows 上,只需打开 "proenv"(它与 "Progress" 程序组中的其他 Progress 命令一起安装)。如果你有 Linux 或 UNIX 安装你 运行 $DLC/bin/proenv.
然后像这样启动 sqlexp(我使用本地数据库名和端口号):
proenv> sqlexp -db s2k -H localhost -S 9500 -user sysprogress -password sysprogress
OpenEdge Release 11.7.2 as of Tue Oct 24 18:20:59 EDT 2017
Connecting user "sysprogress" to URL "jdbc:datadirect:openedge://localhost:9500;databaseName=s2k"... (8920)
SQLExplorer>
如果没有错误并且您收到 SQLExplorer> 提示,这足以表明存在可用的工作连接。
如果您想更进一步并证明您已获得获取数据的权限,请尝试一个简单的 select 语句:
SQLExplorer> select count(*) from pub.customer;
count(*)
--------------------
1117
SQLExplorer> quit;
proenv>
如果这不起作用,那么本地 DBA 没有配置 SQL 访问权限,或者您的 configuration/credentials 不正确,使用其他工具无法解决这个问题。
OpenEdge SQL 注释:
如果您还不知道 - 所有 OpenEdge 数据都是可变长度的。许多 SQL 工具期望字段的宽度是已知的,使用元模式数据来获取默认值。如果本地 DBA 没有通过 "dbtool" 维护该数据,那么您可能会因为数据比预期宽而出错。
sqlexp 要求命令以“;”结尾。
"pub" 模式是 OpenEdge 应用程序表所在的模式。 Table 名称需要 "pub." pre-pended.
Table 和包含“-”的字段名称需要用引号引起来。
我把我发现的答案贴出来,以防其他人正在寻找这个答案。在 NodeJS 中使用 REST API 我使用 npm-odbc 和 OpenEdge odbc 驱动程序连接到数据库。尽管 npm-odbc 包只提到了 Unix,但它实际上在 windows.
上工作