2012-05-11 208 views
1

我對AS400非常陌生,而且卡住了。我已閱讀文檔,但找不到我需要的內容。 我有一個到AS400服務器的odbc連接。當我運行這個命令,我得到一個與OUTFILE我需要的一切:使用ODBC連接的iSeries(AS400)輸出

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

那麼你想要得到的結果作爲一個RecordSet或?隨着什麼訪問這個? VBScript,.NET或其他Windows技術? (Windows技術假設是因爲您使用的是odbc)。 – David

+0

儘管有些人認爲它僅僅是語義,但該平臺不再是AS/400。實際名稱確實不重要 - 除非您打算在網上搜索幫助。用'AS/400'進行搜索很可能會在10年前獲得結果。除非你在Win98下工作,這可能沒有幫助。試試'iSeries',甚至是現在的名字'IBM i'。 –

+0

@Buck,謝謝你的提示。 – recklessmortal

回答

1

我希望我正在解釋你問的問題。它看起來像訪問用戶配置文件數據並將其轉儲到文件。看起來你希望在腳本中使用該文件的內容,或者在Windows上運行該文件的內容。如果是這樣的話:

通常,當從Windows世界訪問文件中的數據時,無論是通過ODBC和VBScript還是.NET,AS/400都被視爲數據庫。庫中的所有文件都通過內置的DB2數據庫公開。它全部是自動的,是通用DB2數據庫的一部分。

因此,創建該文件之後,你應該有一個名爲TEST3文件庫CHHFLE

你會創建一個連接並執行以下SQL語句來讀取其中的內容:

Select * From CHHFLE.TEST3 

這當然,假設你有適當的權限來訪問它。您應該可以使用iSeries Navigator工具對其進行測試,該工具包括在腳本中執行SQL Server腳本之前對數據庫運行SQL腳本的功能。

新增閱讀上述

意見後,有關於連接到從Python中DB2在this question信息。我希望這有幫助。

0

OUTPUT(*)不是標準輸出,不幸的是。這意味着您將無法將OUTPUT(*)重定向到ODBC連接。通過OUTPUT(*OUTFILE)轉儲到DB2表是一個很好的計劃。一旦完成,就像使用任何其他DB2表一樣使用標準的光標/讀取循環。

+0

我的問題是,我將運行一段需要一段時間才能運行並填充outfile的命令,但是在向服務器發送該命令後,我的腳本會在完成寫入之前立即查詢outfile。 我是否需要延遲構建或等待以某種方式檢查outfile是否完成? – recklessmortal

+0

我會寫一個存儲過程,通過一個ODBC調用返回你需要的結果集。 –