I need a program, in Delphi, which would fill two identical tables in two database with large amount of random test data, almost identical for the two databases except for a specified number of randomly distributed differences.
There are tools on the market which do similar job (e.g. [login to view URL]), but
only for one table, of course. I need two tables filled with slightly different data in order to test performance and limitations of my data comparison product.
So far the test data generator is for in-house use only, so there is no need for a production quality UI, it just needs to be usable. On input, I need to specify:
* The two databases to be used (standard connection dialogs);
* Name of the table (supposed to be the same in both DBs)
* the total number of records generated;
* Number of records missing in 1st table (that is, only inserted into the 2nd one),
* Number of records missing in 2nd table,
* number of changes in column values
* an average size of BLOB data (if any)
* an average size of VARCHAR data (in % of max size)
------
[Added 26 Dec 2003]: I thought I'd rather specify in more details how I expect the random data for a new record to be
generated. Columns of the target table are displayed in a TListBox, I can select any column and configure how data
for it is generated:
- Numeric: random numbers, Min and Max limits can be specified
- Bit (0 or 1): probability of getting 1 is specified
- Strings:
a) as random sequences of printable characters
b) as randomly selected line from a specified text file
- GUIDs (uniqueidentifier): using CoCreateGUID
- Dates: random in a selected range (?)
For any of the types (except for BIT, obviously), the ability of taking values, randomly, from a choosen lookup table in the same database would be a big advantage.
------
On output, I need a log of the exact changes made and the two tables filled with data.
## Deliverables
1) Complete and fully-functional working program, in Delphi 6, in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site).
Further details:
The program should analyze the table structure and be able to generate some reasonable random values for each of the common types. No need to do anything about the foreign keys (assume there aren't any), but at least IDENTITY fields must be properly handled.
As I see it, the program should prepare a record in memory, then pull some random numbers and decide if any modifications should be made to the record, then add it to either one of both tables.
The program must not be DBMS-specific. First of all, it must work for MS SQL Server, but I don't see any reason why it should not work on any other database available via standard ADO or BDE access layers of Delphi.
## Platform
Windows 2000/XP/ME, with any database supporting