Banco de Dados

26 out, 2018

Realize dumps de banco de dados em PHP com o db-dumper

Publicidade

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!