This is a PHP package designed to generate an SQL dump from a MySQL database using pure PHP, without needing to rely on mysqldump
or other tools.
- PHP version 7.4 or higher with mysqli and mbstring extensions enabled
- MySQL server and a user with
SHOW
andSELECT
privileges
Through Composer:
composer require eugabrielsilva/sql-dumper
Manual installation:
Copy src/SQLDumper.php
and include it in your script.
// Include Composer packages if not yet
require 'vendor/autoload.php';
// Create SQLDumper instance
$db = new \GabrielSilva\SQLDumper\SQLDumper();
// Set your server settings (optional)
$db->host = 'localhost';
$db->user = 'root';
$db->password = '';
$db->db = 'app';
// Generate dump to an SQL file
$db->dumpToFile('backup.sql');
// You can also dump to a string
$dump = $db->dumpToString();
There are a few options that you can use to modify SQLDumper, these options are properties from the instance that can be overwritten.
Note: values shown below are the default ones.
$db->host = 'localhost'; // Server hostname
$db->user = 'root'; // Username to connect to the database
$db->password = ''; // User password
$db->db = 'app'; // Database name
$db->port = 3306; // Server port
$db->charset = 'utf8'; // Database charset
$db->includes = []; // Array of tables to include in dump, empty for all
$db->excludes = []; // Array of tables to exclude from dump
$db->createTables = true; // Include CREATE TABLE statements in dump
$db->createDatabase = false; // Include CREATE DATABASE statement in dump
$db->dropTables = false; // Include DROP TABLE statements in dump
$db->dropDatabase = false; // Include DROP DATABASE statement in dump
$db->insertData = true; // Include data in dump
$db->deleteData = false; // Delete data from table before inserting
$db->insertType = 'INSERT'; // Insert type: INSERT, INSERT IGNORE or REPLACE
$db->safeMode = true; // Use IF EXISTS and IF NOT EXISTS clauses in dump
$db->chunkSize = 3000; // Number of rows to fetch per query (useful in large tables)
Important! If you change any of the server options, like host
, user
, password
, db
, port
or charset
, you need to refresh the database connection using $db->connect()
method.
Library developed and currently maintained by Gabriel Silva.