2009-11-26 149 views

回答

2

嘗試DB-Access

... DB-Access提供用於輸入,執行和調試結構化查詢語言(SQL)語句和存儲過程語言(SPL)例程的用戶界面...

3

正如Michal Niklas所說,IBM Informix Dynamic Server(俗稱IDS或甚至是Informix)提供的標準工具是DB-Access。但是,它僅與IDS本身分發,而不是與Informix Client SDK(CSDK)或Informix Connect(I-Connect)產品分發。

如果您想從未安裝IDS的計算機訪問IDS,您需要CSDK或I-Connect以及其他一些軟件(可能是原始版本(十年前的微軟版本以上)版本SQLCMD。這是我使用的 - 在過去的二十二年左右(咳嗽,波瀾,)聲)中使用了各種版本;我寫它是因爲我不喜歡名爲isql(產品Informix SQL的一部分)的程序的命令行行爲,它是DB-Access的前綴。 (Lot的歷史 - 對您而言不是太重要。)

用法 - SQLCMD比您知道如何處理更多的選項。基本是簡單的,但:

sqlcmd -d [email protected] -e 'select * from table' -x -f file.sql 

這連接到一個名爲「DBNAME」在被稱爲是在sqlhosts文件(通常$ INFORMIXDIR的/ etc/sqlhosts中)指定的「DBSERVER」數據庫服務器的數據庫。 '-e'表示一個SQL表達式 - 一個select語句;結果將以嚴格格式(Informix UNLOAD格式)打印到標準輸出,每條記錄一個邏輯行。 '-x'打開跟蹤模式; '-f'選項表示讀取命名文件以獲取更多命令。 '.sql'擴展名不是必須的(注意:DB-Access需要'.sql'擴展名並且會爲你添加它)。 (沒有以'-e'或'-f'作爲前綴的參數被啓發式解釋;如果它包含空格,則爲SQL;否則爲文件名)。'-H'選項打印列標題(標籤)在結果集之前; '-T'選項打印列類型(標題之後,結果之前)。 '-B'選項以基準模式運行;它打開跟蹤,打印語句,語句開始的時間,以及時間花了多長時間。 (如果SQL需要很多分鐘才能運行,那麼知道語句何時開始會有幫助 - 就像在基準測試場景中那樣)。有輸出格式的控制(包括CSV和甚至是XML的變體 - 但不是使用名稱空間的XML)和日期格式等等。有「內置」命令來重定向輸入和輸出以及錯誤;大多數命令行選項也可以在干預中使用,等等。SQLCMD還提供歷史記錄機制;它保存SQL語句,您可以查看,編輯或重新運行它們。結合輸出重定向,您可以保存執行的語句列表等。

SQLCMD唯一的疑難問題是它當前沒有移植到Windows。它在大約6或7年前曾在Windows上工作過。從那以後,微軟的編譯器已經對非MS API函數產生了興趣,堅持認爲,即使我通過名稱(通過請求POSIX功能)詢問它們,函數必須以下劃線作爲前綴,並且可以使用一堆函數如果你注意自己在做什麼(但遺憾的是,可能會被那些沒有注意的人濫用,並且比周圍的編程人員注意力不集中,它看起來)會被安全地使用 - 我的意思是像'strcpy() '如果您在調用之前知道源字符串和目標字符串的大小,它可以完全安全地使用。這是我要做的事情 - 它還沒有完成,因爲它不是我的癢。

還有另一個開源工具,名爲SQSL,您可以考慮。它比SQLCMD(條件邏輯等)有一些優勢,但我認爲SQLCMD比SQSL有一些優勢。

你也可以考慮Perl + DBI + DBD :: Informix + dbish是否適合你。

+0

我很感謝你的非常詳細的迴應喬納森。謝謝。 根據您在本網站上的一些回覆,我已經檢出了您鏈接到上面的SQLCMD工具(ftp://ftp.iiug.org/pub/informix/pub/sqlcmd-86.00.tgz/),但無法完全可以在Ubuntu 8.04 Linux上編譯它,因爲./configure失敗並顯示錯誤:檢查INFORMIXDIR ... configure:error:無法確定INFORMIXDIR的有效值。我實際上認爲我可以在沒有安裝IDS的情況下使用它,因爲服務器不在本地。您的解釋清楚地表明我不僅僅需要SQLCMD。 – Saheed 2009-11-29 23:16:32

+0

@Saheed:要編譯SQLCMD,您需要IBM Informix Client SDK(CSDK)。這與IDS一起提供,但也可以單獨提供。要運行SQLCMD,您需要IBM Informix Connect(I-Connect) - 或CSDK。當您嘗試配置SQLCMD時,必須在環境中設置INFORMIXDIR以指向CSDK的安裝位置 - 或者它必須安裝在/ usr/informix中($ INFORMIXDIR的默認位置;也可以通過ln -s/opt/IBM/informix/usr/informix'')。請注意,沒有必要在機器上安裝IDS - 儘管您可以擁有它;並且IDS不必安裝在同一個目錄中。 – 2009-11-30 04:41:37

+0

話雖如此,習慣上將CSDK和IDS放在同一個目錄(或I-Connect和IDS)中。將兩者分開是有利的和不利的。 – 2009-11-30 04:42:26