Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


sexta-feira, 4 de outubro de 2019

MySQL - Extraindo uma única tabela do dump de um banco de dados

Por Eduardo Legatti

Olá,

Geralmente utilizo uma técnica muito simples quando preciso extrair e importar apenas uma tabela que está dentro de um dump que foi gerado pelo mysqldump. A técnica consiste em gerar um arquivo SQL específico contendo apenas a tabela que eu quero. Como demonstrarei a seguir, utilizarei o comando grep do Linux para extrair uma tabela específica contida no arquivo bd01.sql que contém um dump de todas as tabelas e dados do banco de dados bd01.

[mysql@]# grep -n "Table structure" bd01.sql
24:-- Table structure for table `tb_usuarios`
52:-- Table structure for table `tb_historico`
77:-- Table structure for table `tb_adesao`
110:-- Table structure for table `tb_veiculos`
208:-- Table structure for table `tb_atendimento`
255:-- Table structure for table `tb_atendimento_itens`
310:-- Table structure for table `tb_bairros`
334:-- Table structure for table `tb_boletos`
369:-- Table structure for table `tb_carencia`
400:-- Table structure for table `tb_cliente_pj`
427:-- Table structure for table `tb_clientes`
512:-- Table structure for table `tb_parametros`
536:-- Table structure for table `tb_consultores`
582:-- Table structure for table `tb_corretores`
638:-- Table structure for table `tb_credenciados`
710:-- Table structure for table `tb_decl`
737:-- Table structure for table `tb_desbloqueio`
761:-- Table structure for table `tb_desbloqueio_cli`
786:-- Table structure for table `tb_pecas`
815:-- Table structure for table `tb_manutencao_controle`
847:-- Table structure for table `tb_excecao`
872:-- Table structure for table `tb_forma_pgto`
896:-- Table structure for table `tb_tarefas`
935:-- Table structure for table `tb_gastos`
996:-- Table structure for table `tb_liberacao`
1031:-- Table structure for table `tb_lote`
1056:-- Table structure for table `tb_plano_tabela`
1080:-- Table structure for table `tb_mensalidades`
1147:-- Table structure for table `tb_nfse`
1188:-- Table structure for table `tb_obs_cliente`
1222:-- Table structure for table `tb_pagamentos`
1307:-- Table structure for table `tb_parceiros`
1374:-- Table structure for table `tb_veiculos_controle`
1407:-- Table structure for table `tb_orcamentos`
1435:-- Table structure for table `tb_uf`
1464:-- Table structure for table `tb_carroceria_controle`
1497:-- Table structure for table `tb_plano_veiculo`
1534:-- Table structure for table `tb_plano_procedimento`
1564:-- Table structure for table `tb_planos`
1592:-- Table structure for table `tb_portes`
1621:-- Table structure for table `tb_precos`
1647:-- Table structure for table `tb_procedimentos`
1687:-- Table structure for table `tb_procedimentos_diario`
1714:-- Table structure for table `tb_procedimentos_mensal`
1741:-- Table structure for table `tb_profissional`
1770:-- Table structure for table `tb_oficinas`
1794:-- Table structure for table `tb_reajuste_mensalidade`
1826:-- Table structure for table `tb_reajuste_procedimentos`
1859:-- Table structure for table `tb_remessa`

Como demonstrado acima, o resultado do comando grep exibe exatamente o número que dará início a importação de cada tabela dentro do arquivo bd01.sql. Para eu importar apenas a tabela tb_planos, verifico que a mesma se inicia na linha 1564 e que termina uma linha antes de iniciar a próxima tabela que está na linha 1592. Portanto, irei gerar um novo arquivo contendo apenas a estrutura e dados da tabela da linha 1564 até 1591 conforme a seguir.

[mysql@]# sed -n '1564,1591 p' bd01.sql > tb_planos.sql

Pronto. Podemos ver abaixo que o arquivo tb_planos.sql contém os comandos necessários para importar a tabela e seus dados.

[mysql@]# cat tb_planos.sql
-- Table structure for table `tb_planos`
--

DROP TABLE IF EXISTS `tb_planos`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tb_planos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome_plano` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
  `valor` decimal(5,2) NOT NULL,
  `usuario` int(11) DEFAULT NULL,
  `data` date DEFAULT NULL,
  `flag_unico` char(1) COLLATE latin1_general_ci DEFAULT 'N',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tb_planos`
--

LOCK TABLES `tb_planos` WRITE;
/*!40000 ALTER TABLE `tb_planos` DISABLE KEYS */;
INSERT INTO `tb_planos` VALUES
(1,'BASIC',10.15,NULL,NULL,'N'),
(2,'MEDIUM',15.20,NULL,NULL,'N'),
(3,'GOLD',25.99,NULL,NULL,'N'),
(4,'PLATINUM',35.45,NULL,NULL,'N'),
(5,'SOFT',22.10,NULL,NULL,'N'),
(6,'STANDARD',40.00,NULL,NULL,'N'),
(7,'SILVER',99.20,NULL,NULL,'N'),
(8,'MASTER',113.40,NULL,NULL,'N'),
(9,'BLUE',5.15,NULL,NULL,'N'),
(10,'ESSENTIAL',20.15,NULL,NULL,'N'),
(11,'MAX',50.00,NULL,NULL,'N'),
(100,'DIAMOND',60.00,NULL,'2019-11-01','N');
/*!40000 ALTER TABLE `tb_planos` ENABLE KEYS */;
UNLOCK TABLES;

--

Para realizar a importação da tabela para o meu banco de dados, irei realizar a operação a seguir.

[mysql@]$ mysql -uroot -psenha -D bd01 < tb_planos.sql

Pronto. Após a importação podemos ver abaixo que a tabela foi carregada para dentro do banco de dados bd01.

[mysql@]$ mysql -uroot -psenha

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4911066
Server version: 5.6.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use bd01

Database changed

mysql> select * from tb_planos;
+-----+------------+--------+---------+------------+------------+
| id  | nome_plano | valor  | usuario | data       | flag_unico |
+-----+------------+--------+---------+------------+------------+
|   1 | BASIC      |  10.15 |    NULL | NULL       | N          |
|   2 | MEDIUM     |  15.20 |    NULL | NULL       | N          |
|   3 | GOLD       |  25.99 |    NULL | NULL       | N          |
|   4 | PLATINUM   |  35.45 |    NULL | NULL       | N          |
|   5 | SOFT       |  22.10 |    NULL | NULL       | N          |
|   6 | STANDARD   |  40.00 |    NULL | NULL       | N          |
|   7 | SILVER     |  99.20 |    NULL | NULL       | N          |
|   8 | MASTER     | 113.40 |    NULL | NULL       | N          |
|   9 | BLUE       |   5.15 |    NULL | NULL       | N          |
|  10 | ESSENTIAL  |  20.15 |    NULL | NULL       | N          |
|  11 | MAX        |  50.00 |    NULL | NULL       | N          |
| 100 | DIAMOND    |  60.00 |    NULL | 2019-11-01 | N          |
+-----+------------+--------+---------+------------+------------+
12 rows in set (0.00 sec)



Nenhum comentário:

Postagens populares