Fala pessoal, tudo bom? Hoje seguimos com os artigos mostrando projetos em PHP que são úteis no nosso dia a dia. Dessa vez trago mais uma biblioteca da Spatie.
Muitas vezes tinha problemas de realizar dumps de um banco de dados, ou tabelas específicas e tinha que recorrer em: entrar no PHPmyAdmin, ou no MySQL Workbench, ou mesmo no MySQL no terminal para realizar o dump de uma tabela específica. Agora, com o db-dumper a ação de realizar o dump é bem mais tranquilo, precisando só de 4 linhas de comando para podermos realizar um dump de um banco todo.
Para realizar o dump dos dbs específicos você precisará de:
- mysqldump para realizar o dump de bancos MySQL;
- pg_dump para realizar o dump de bancos de dados PostgreSQL
- sqlite3 para realizar o dump de bancos SQLite
- mongodump para realizar o dump de bancos MongoDB
Bem, vamos ver como funciona isso:
Primeiramente vamos criar uma pasta db-dump realizar a inclusão da biblioteca em nosso projeto.
composer require spatie/db-dumper
Agora vamos criar um arquivo dump.php e criar nosso dump. Coloquei o código referente a cada banco de dados que você queira utilizar.
<?php
require_once('vendor/autoload.php');
$databaseName = 'database'; //nome do banco de dados que você quer fazer o dump
$userName = ''; //nome de usuário do banco de dados
$password = ''; //senha do usuário do banco de dados
//Caso o seu banco seja um MySQL:
Spatie\DbDumper\Databases\MySql::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->dumpToFile('dump.sql');
//Caso o seu banco seja um PostgreSQL
Spatie\DbDumper\Databases\PostgreSql::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->dumpToFile('dump.sql');
//Caso o seu banco seja um SQLite
Spatie\DbDumper\Databases\Sqlite::create()
->setDbName($pathToDatabaseFile)
->dumpToFile('dump.sql');
//Caso o seu banco seja um MongoDb
Spatie\DbDumper\Databases\MongoDb::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->dumpToFile('dump.gz');
No meu caso, como estou usando nosso velho e querido MySQL, o arquivo dump.php ficou assim mesmo:
<?php
require_once('vendor/autoload.php');
$databaseName = 'pokemao'; //nome do banco de dados que você quer fazer o dump
$userName = 'usuario'; //nome de usuário do banco de dados
$password = 'senha'; //senha do usuário do banco de dados
Spatie\DbDumper\Databases\MySql::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->dumpToFile('pokemao.sql');
Depois, basta digitar no terminal:
php dump.php
E você gerará na mesma pasta do seu projeto o arquivo de dump correspondente.
Mas, caso você queira realizar o dump de tabelas específicas, você pode fazer da seguinte maneira:
<?php
require_once('vendor/autoload.php');
$databaseName = 'pokemao'; //nome do banco de dados que você quer fazer o dump
$userName = 'usuario'; //nome de usuário do banco de dados
$password = 'senha'; //senha do usuário do banco de dados
Spatie\DbDumper\Databases\MySql::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->includeTables(['tabela1', 'tabela2', 'tabela3']) //aqui você insere as tabelas que deseja
->dumpToFile('tabelas.sql');
O que é bem similar caso você queira excluir tabelas específicas.
<?php
require_once('vendor/autoload.php');
$databaseName = 'pokemao'; //nome do banco de dados que você quer fazer o dump
$userName = 'usuario'; //nome de usuário do banco de dados
$password = 'senha'; //senha do usuário do banco de dados
Spatie\DbDumper\Databases\MySql::create()
->setDbName($databaseName)
->setUserName($userName)
->setPassword($password)
->excludeTables(['tabela1', 'tabela2', 'tabela3']) //aqui você insere as tabelas que deseja excluir
->dumpToFile('tabelas.sql');
Eu achei esse projeto realmente útil e estou começando a usar para realizar os dumps mais facilmente. Espero que ajude você também.
Um grande abraço e até a próxima!