PHP Classes
elePHPant
Icontem

PHP Database Fill: Fill records of MySQL tables with test data

Recommend this page to a friend!
  Info   View files Example   View files View files (5)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2018-03-22 (4 months ago) RSS 2.0 feedNot enough user ratingsTotal: 334 All time: 6,912 This week: 794Up
Version License PHP version Categories
database-fill 0.48GNU General Publi...5.3PHP 5, Databases, Testing
Description Author

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.

  Performance   Level  
Name: Martin Latter is available for providing paid consulting. Contact Martin Latter .
Classes: 6 packages by
Country: United Kingdom United Kingdom
Age: ???
All time rank: 177377 in United Kingdom United Kingdom
Week rank: 82 Up3 in United Kingdom United Kingdom Up
Innovation award
Innovation award
Nominee: 3x

Details

Database Filler

Fill MySQL database tables with test data by parsing the SQL schema file.

Purpose

  • Quickly populate database tables with row data for testing SQL retrieval.
  • Assist in testing complex database schema, before moving the database to a production environment.
  • Check table field population with specified datatypes, potential data truncation, visual cues etc.
  • Test database connection encoding and character encoding, and data insertion speeds.

[1]: https://tinram.github.io/images/databasefiller-data.png ![Database-Filler database][1]

Background

Originally, I needed to populate a database containing 14 complex tables. Tools such as Spawner are useful 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?

[2]: https://tinram.github.io/images/databasefiller-execute.png ![Database-Filler execute][2]

Database Requirements

  1. The script expects the database schema to exist in MySQL (mysql -u root -p < test.sql).
  2. All table names and column names in the MySQL schema require back-ticks.
  3. Unique keys must be removed from tables when using the option 'random_data' => FALSE

Other

  • 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. Number of INSERTs per second will depend on MySQL configuration settings (default is not optimised), datatype / length inserted, operating system, hardware, etc.

Set-up

Adjust the array connection details and parameters in databasefiller_example.php file.

Then execute the file with PHP on the command-line:

    php databasefiller_example.php

or run the file through a web server e.g.

    http://localhost/Database-Filler/databasefiller_example.php

License

Database Filler is released under the GPL v.3.

  Files folder image Files  
File Role Description
Plain text file databasefiller.class.php Class Class source
Accessible without login Plain text file databasefiller_example.php Example Example script
Accessible without login Plain text file LICENSE Lic. Auxiliary data
Accessible without login Plain text file README.md Doc. Auxiliary data
Accessible without login Plain text file test.sql Data Auxiliary data

 Version Control Unique User Downloads Download Rankings  
 100%
Total:334
This week:0
All time:6,912
This week:794Up
User Comments (1)
nice
1 year ago (muabshir)
80%StarStarStarStarStar