4

Firstly apologies if this question seems like a wall of text, I can't think of a way to format it.

I have a machine with valuable data on(circa 1995), the machine is running unix (SCO OpenServer 6) with some sort of database stored on it.

The data is normally accessed via a software package of which the license has expired and the developers are no longer trading.

The software package connects to the machine via telnet to retrieve data and modify data (the telnet connection no longer functions due to the license being changed).

I can access the machine via an ODBC driver (SeaODBC.dll) over a network, this was how I was planning to extract the data but so far I have retrieved 300,000 rows in just over 24 hours, in total I estimate there will be around 50,000,000 rows total so at current speed it will take 6 months!

I need either a quicker way to extract the data from the machine via ODBC or a way to extract the entire DB locally on the machine to an external drive/network drive or other external source.

I've played around with the unix interface and the only large files I can find are in a massive matrix of single character folder (eg A\G\data.dat, A\H\Data.dat ect).

Does anyone know how to find out the installed DB systems on the machine? Hopefully it is a standard and I'll be able to find a way to export everything into a nicely formatted file.

Edit

Digging around the file system I have found a folder under root > L which contains lots of single lettered folders, each single lettered folder contains more single letter folders.

There are also files which are named after the table I need (eg "ooi.r") which have the following format:

<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
4

2 回答 2

1

I do not recognize those kinds of filenames A\G\data.dat and so on (filenames with backslashes in them???) and it's likely to be a proprietary format so I wouldn't expect much from that avenue. You can try running file on these to see if they are in any recognized format just to see...

I would suggest improving the speed of data extraction over ODBC by virtualizing the system. A modern computer will have faster memory, faster disks, and a faster CPU and may be able to extract the data a lot more quickly. You will have to extract a disk image from the old system in order to virtualize it, but hopefully a single sequential pass at reading everything off its disk won't be too slow.

I don't know what the architecture of this system is, but I guess it is x86, which means it might be not too hard to virtualize (depending on how well the SCO OpenServer 6 OS agrees with the virtualization). You will have to use a hypervisor that supports full virtualization (not paravirtualization).

于 2013-02-26T16:46:17.270 回答
0

I finally solved the problem, running a query using another tool (not through MS Access or MS Excel) worked massively faster, ended up using DaFT (Database Fishing Tool) to SELECT INTO a text file. Processed all 50 million rows in a few hours.

It seems the dll driver I was using doesn't work well with any MS products.

于 2013-03-11T13:34:49.607 回答