我是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查询,但我无法弄清楚如何将命令的结果作为某种记录集来实现。
答案 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表一样。