|Last Updated|| ||Ratings|| ||Unique User Downloads|| ||Download Rankings|
|2021-01-09 (9 months ago) ||Not enough user ratings||Total: 368 ||All time: 6,754 This week: 287|
This class can fill records of MySQL tables with test data.
It takes the SQL dump file of a MySQL database and parses it to extract the list of database tables.
The class executes SQL statements to insert records on the MySQL database tables.
The new record field values can be generated randomly or set to a constant value.
The number of records to insert, the range of characters to use in random data and the character set encoding are configurable parameters.
Populate MySQL database tables with test data by parsing the SQL schema file.
Database table reproduction without using any real or sensitive data:
+ Copy of production database tables required for query analysis, yet sensitive data cannot be imported. However, you possess a structure-only SQL schema file.
Schema design and development:
+ Check table field population with specified datatypes, potential data truncation, etc.
+ Test connection encoding and character encoding, and data insertion speeds.
Originally, I needed to populate a database containing 14 complex tables. Tools such as Spawner are ideal for populating small tables, but in this case, specifying the datatypes for 300+ fields to initiate Spawner would have been insanity.
Instead, why not parse the SQL schema?
The script expects the database schema to already exist in MySQL (`mysql -u root -p < test.sql`).
All table names and column names in the MySQL schema require back-ticks.
Unique keys must be removed from tables when the configuration array option random_data is set to false.
The majority of MySQL datatypes are supported.
Any foreign keys are disabled on data population.
Random character generation is slow in PHP, and such slowness further depends on field length, number of fields, and the number of rows being generated.
Multiple INSERTs are added in a single query, which is quite fast. The number of INSERTs per second will depend on MySQL configuration settings (the defaults are not optimised), datatype / length inserted, system load, operating system, hardware etc.
Configuration boolean toggles (
false by default):
+ make added integers incremental, enabling simplistic integer foreign keys.
+ populate a primary key field, e.g. a UUID used as a primary key (experimental, supports only some definitions).
Ensure the database already exists in MySQL
e.g. for the test schema:
mysql -u root -p < test.sql
Adjust the array connection details and parameters in the file databasefiller_example.php
Then execute this file with PHP on the command-line:
or run the file through a web server e.g.
SQLParser would have been used in this project had it been available in 2014.
Database Filler is released under the GPL v.3.
||Applications that use this package
No pages of applications that use this class were specified.
If you know an application of this package, send a message to the author to add a link here.