1

我对 AS400 很陌生,我被卡住了。我已阅读文档,但找不到我需要的东西。我有一个到 AS400 服务器的 odbc 连接。当我运行这个命令时,我会得到一个包含我需要的一切的 Outfile:

CALL QSYS.QCMDEXC('DSPUSRPRF USRPRF(*ALL) OUTPUT(*OUTFILE) OUTFILE(CHHFLE/TEST3)', 0000000061.00000)

我需要将此命令的结果接收到通过 odbc 连接的脚本,而不是将结果发送到 outfile。如果我将 'OUTPUT(*OUTFILE)' 更改为 'OUTPUT(*)' 我在尝试 'fetchall()' 时没有得到任何结果。有没有办法通过 odbc 连接到我的脚本来获取这些信息?

编辑:我在 linux 服务器上,在 python 脚本中使用 pyodbc 进行连接。我可以使用此连接成功运行 sql 查询,但我不知道如何将命令的结果作为某种记录集通过。

4

2 回答 2

1

我希望我能正确解释您的要求。看起来您正在访问用户配置文件数据并将其转储到文件中。看起来您想在脚本或在 Windows 上运行的东西中使用该文件的内容。如果是这样的话:

通常,当从 Windows 世界访问文件中的数据时,无论是通过 ODBC 和 VBScript 还是 .NET,AS/400 都被视为数据库。库中的所有文件都通过内置的 DB2 数据库公开。它是全自动的,并且是 Universal DB2 数据库的一部分。

因此,创建此文件后,您应该在库 CHHFLE 中有一个名为 TEST3 的文件

您将创建一个连接并执行以下 SQL 语句来读取内容:

Select * From CHHFLE.TEST3

当然,这假设您有适当的权限来访问它。您应该能够使用 iSeries Navigator 工具对此进行测试,该工具包括在执行脚本之前针对数据库运行 SQL 脚本的能力。

阅读以上评论后添加

这个问题上有关于从 Python 连接到 DB2的信息。我希望它会有所帮助。

于 2012-05-11T16:29:55.230 回答
0

OUTPUT(*)不幸的是,它不是标准输出。这意味着您将无法重定向OUTPUT(*)到 ODBC 连接。通过转储到 DB2 表OUTPUT(*OUTFILE)是一个不错的计划。完成后,使用标准游标/提取循环,就好像您正在处理任何其他 DB2 表一样。

于 2012-05-11T17:06:44.463 回答