2013-02-26 26 views
4

首先道歉,如果這個問題看起來像一堵文本牆,我想不出一種格式化它的方式。從一個非常古老的unix機器提取數據

我有一個有價值的數據的機器上(大約1995年),本機與某種數據庫存儲其上運行UNIX(在SCO OpenServer 6)。

的數據通過一個軟件包其許可證已經過期了正常訪問和開發者不再交易。

軟件包通過telnet連接到設備以檢索數據和修改數據(telnet連接由於許可證不再功能被改變)。

我可以通過網絡通過ODBC驅動程序(SeaODBC.dll)訪問機器,這是我計劃提取數據的方式,但到目前爲止,我已經在24小時內檢索了300,000行,總計估計總共將有大約50,000,000行,所以目前的速度需要6個月!

我需要或者更快的方式經由ODBC或一種方法,該機器上本地提取整個DB到外部驅動/網絡驅動器或其它外部源中提取從機器的數據。

我玩過unix接口,我能找到的唯一大文件是單個字符文件夾(例如A \ G \ data.dat,A \ H \ Data.dat ect)的巨大矩陣。

有誰知道如何找出在機器上安裝的數據庫系統?希望這是一個標準,我將能夠找到一種方式將所有內容導出爲格式良好的文件。

編輯

在文件系統,我發現root > L其中含有大量的單字母的文件夾下的文件夾挖,每個單字母的文件夾中包含更多的單個字母的文件夾。

還有一些是我所需要的表而得名,其具有以下格式的文件(例如「ooi.r」):

<Id> 
[] 
    l for ooi_lno, lc for ooi_lcno, s for ooi_invno, id for ooi_indate 
    require l="AB" 
    require ls="SO" 
    require id=25/04/1998 
    {<id>} is s 
    sort increasing Id 
+0

可能更適合http://unix.stackexchange.com/ – amphibient 2013-02-26 16:35:42

+0

有趣的問題,也可以嘗試http://dba.stackexchange.com – jamesTheProgrammer 2013-02-26 16:39:03

+3

作爲第一個切入點,我會在本地運行odbc連接機器並在本地提取它。性能瓶頸可能與網絡有關。另外,我假定查詢是一個簡單的「select *」類型的查詢,最好來自基礎表而不是視圖。 – 2013-02-26 16:41:54

回答

0

我終於解決了這個問題,使用其他工具(不是通過MS Access或MS Excel)運行查詢的速度極快,最終使用DaFT(數據庫捕魚工具)到SELECT INTO一個文本文件。在幾個小時內處理所有5000萬行。

似乎我使用的DLL驅動程序不適用於任何MS產品。

1

我不承認這些文件名種的A\G\data.dat等(在他們???)反斜槓的文件名,它很可能是一個專有的格式,所以我不希望從渠道很多。您可以嘗試在這些上運行file以查看它們是否處於任何可識別的格式,只是爲了看到...

我建議通過虛擬化系統來提高通過ODBC提取數據的速度。現代計算機將具有更快的內存,更快的磁盤和更快的CPU,並且可能能夠更快速地提取數據。你將不得不以虛擬化從舊系統中提取磁盤映像,但希望在閱讀一切都關掉了磁盤的單個連續傳球也不會太慢。

我不知道這個系統的架構是什麼,但我想它是x86,這意味着它可能不是太難以虛擬化(取決於SCO OpenServer 6 OS與虛擬化的一致性)。你將不得不使用支持全虛擬化(未準虛擬化)系統管理程序。

+0

讀取磁盤可能會非常棘手,它的運行的4個磁盤SCSI陣列和我沒有任何的SCSI設備,將其連接到:( – bendataclear 2013-02-26 16:51:45

+0

從機器本身拉動虛擬陣列的磁盤映像'dd'和流過來網絡到另一個位置,只是可能變成是足夠快......除非性能瓶頸實際上是網絡,爲[戈登·利諾夫(http://stackoverflow.com/users/1144035/gordon-linoff)建議。不管怎樣,這只是一個想法,祝​​你好運。 – Celada 2013-02-26 18:13:03

相關問題