My employer is currently using a database build in Borland Visual dBase 5.5 that has been running on a Windows 95 machine for the last 20 years. I am trying to figure out my best course of action to bring this database into the 21st century, but my knowledge of databases is beginner at best and I'm looking for advice. The problem is compounded by the fact that the original designer had a massive stroke before she was able to complete it. It was functional enough for my employer to use it and he has been by using work-arounds for the few things that just do not function 100% correctly. There are a good number of quality of life features that I'd like to implement as well.

Current options I've come up with:

  1. Move the database to a virtual machine on my Win10 machine, learn Visual dBase 5.5 and attempt to fix all the things that do not work correctly. Pros: Would not be starting from scratch. Cons: My understanding of VMs is that there will be difficulties transferring data from VM to host since the VM OS is pre-Win 2000.

  2. Learn a newer database system and rebuild the database, hopefully being able to import the existing data. Re-entering data is an option. It would be me doing it, I don't want to but I will. Pros: Will be functional on current OS and database system/software will still have support. Cons: A lot more work creating the database and possibly re-entering data.

Other info that may be helpful:

  1. There are multiple databases, two of which have 13,000 records each and are currently gaining 1,000-1,500 new records per database per year.

  2. We are using the native Crystal Reports for direct printing of documents, but I would like the ability to edit the individual documents prior to printing when necessary if possible.

I have some programming background, mostly C++, but no real database creation/support knowledge. However, I'm willing to dive into whatever I need to work on this project, just not sure what is the best route at this point. I'm also open to suggestions for software/languages if I need to just start over.

Any suggestions are greatly appreciated!

  • 2
    Data-wise, there should be ODBC drivers that would read dBase data files; I know there are drivers for FoxPro, which was a dBase clone originally, which might possibly work if all else failed. To pull the data out and put into a new system - I am not recommending these to keep using the data as is! – RDFozz Jun 23 '17 at 19:44
  • 2
    I remember using a software called dbf2sql to migrate data from a Dbase database , to sql server 2012 ( or 2008, I don't remember ). – Racer SQL Jun 23 '17 at 19:52
  • 1
    @RDFozz DataDirect (Progress) makes some pretty solid drivers I prefer their Oracle Wire Protocol driver over the native one to be honest. Maybe this will help. progress.com/odbc/dbase of course once you connect SQL to dbase you still have quite a migration project ahead... – Jacob H Jun 23 '17 at 20:02
  • 1
    Is it secret? or can you upload it? – Evan Carroll Jun 25 '17 at 16:17

Apparently there are updated copies of software called "dBase" but they seem to need special care, and money, to run on a modern OS. Visual dBase 5.5 itself provides object-oriented and event-driven programming, but I think probably it's mainly based on dealing with one record (row) at a time in the data file (database or "table"). It provides the data storage, and also the program that a user needs to work with the data.

A modern equivalent system might consist of separate programs, a "database server" whose function is only to store data reliably and output it as required, and a "client" or "front end" which presents data in user-friendly style, typically using the "SQL" language to send and retrieve data on the server (by sets, not individual rows, usually). Another category of tool, and sometimes an expensive one, is "reporting".

Amongst questions to ask: how many people need to use the data simultaneously? If it's more than one, then probably a client-and-server solution is best. If one, you might be able to do the whole thing in Microsoft Excel.

Your employer may be able to buy a database application which serves the needs of your industry, and save the effort of re-learning the one that you've got or writing your own - your time presumably costs money as well. But it won't be cheap. A buy-in will probably be based on one of the industry-standard database servers that are known here, and you can probably convert your data into forms that the system will accept. And the tool may provide definable fields for data that only your employer has thought of storing.

So, you could start by identifying any suitable database products for your industry, find out what database server they may use, and whether the server comes as a cheap or free download for tryout use - and then first of all, get that server, and try to import an initial copy of your data, your way, into the server. That should move you towards converting the data for use in the new database product, or else writing your own program again, if you think you can do it. If this exercise doesn't work, then, look at a different software and server package - or look at hiring a database consultant to help you.

But if you urgently need to replace the existing system, then using an updated version of dBase may be easier, after all. It won't be an identical system to what you've got, but I suspect it doesn't represent twenty years of progress... so maybe it won't be so different after all.

| improve this answer | |
  • Thank you for the insight. We purchase and manage property tax certificates. It doesn't seems to be an industry that has much out there. The owner has looked at hiring a database consultant and the quotes are significantly more than a small, family-owned business can really afford. I think we're basically looking at doing something in-house. – megruder79 Jul 13 '17 at 13:13


Use XBase. A lot of DBA's at least on the Unix side come with Perl and C skills. There is even a SQL abstraction layer to access it. Should be very easy.

It supports version 5 dBase.

The module provides dbfdump if you need a simple method to get a csv.

| improve this answer | |
  • The OP hinted about C++ and Windows. PERL and Unix/Linux/GNU are quite different beasts, specially if you have to deal with GUIs and reporting tools, which I guess is the case. – joanolo Jun 25 '17 at 21:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.