iSeries(AS400)使用ODBC连接输出

时间:2012-05-11 15:48:42

标签: odbc ibm-midrange

我是AS400的新手,我被卡住了。我已阅读文件,但无法找到我需要的东西。 我有一个与AS400服务器的odbc连接。当我运行此命令时,我得到一个包含我需要的所有内容的文件:

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

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

编辑:我在linux服务器上,在python脚本中使用pyodbc进行连接。我可以使用此连接成功运行SQL查询,但我无法弄清楚如何将命令的结果作为某种记录集来实现。

2 个答案:

答案 0 :(得分:1)

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

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

因此,在创建此文件后,您应该在库CHHFLE

中有一个名为TEST3的文件

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

Select * From CHHFLE.TEST3

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

阅读上述评论后添加

this question上有关于从Python连接到DB2的信息。我希望它有用。

答案 1 :(得分:0)

不幸的是,

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