Mysqldump

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

Caros colegas,

Estou tentando fazer um backup de uma tabela de meu banco de dados Mysql que está no meu provedor para o banco de dados localhost.

Em pesquisa na internet, li que o mysqldump serviria pra isso. Estou tentando usá-lo, mas o máximo que consegui foi fazer o backup dos dados de criação da tabela, mas sem o seu conteúdo.

Li que o mysqldump funcionaria no PowerShell. Nunca tinha usado o PowerShell.

Pesquisei na internet e achei o PowerShell. Veja: https://pt.wikipedia.org/wiki/Windows_PowerShell.

No PowerShell ISE não aparece nada.

Já no PowerShell Modules, ele cria o arquivo .sql. Mas vejam o conteúdo:

Código: Selecionar todos

-- MySQL dump 10.13  Distrib 5.5.37, for Win32 (x86)
--
-- Host: localhost    Database: inacio
-- ------------------------------------------------------
-- Server version        5.5.37
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
--
-- Table structure for table `agcom`
--
 
DROP TABLE IF EXISTS `agcom`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `agcom` (
  `NRCOMPR` int(11) NOT NULL AUTO_INCREMENT,
  `DATA` date DEFAULT NULL,
  `HORA` char(5) DEFAULT NULL,
  `COMPR` text,
  `CAMPO` char(1) DEFAULT NULL,
  `VINCULO` char(20) DEFAULT NULL,
  `DTINCL` date DEFAULT NULL,
  `HRINCL` char(8) DEFAULT NULL,
  `SOLUC` char(1) DEFAULT NULL,
  PRIMARY KEY (`NRCOMPR`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `agcom`
--
 
LOCK TABLES `agcom` WRITE;
/*!40000 ALTER TABLE `agcom` DISABLE KEYS */;
/*!40000 ALTER TABLE `agcom` ENABLE KEYS */;
UNLOCK TABLES;
 
--
-- Table structure for table `teste`
--
 
DROP TABLE IF EXISTS `teste`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `teste` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `teste`
--
 
LOCK TABLES `teste` WRITE;
/*!40000 ALTER TABLE `teste` DISABLE KEYS */;
INSERT INTO `teste` VALUES (1,'Inacio');
/*!40000 ALTER TABLE `teste` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
-- Dump completed on 2015-09-29  0:27:12


Observem que continua sem o conteúdo.

Alguém poderia me ajudar com isso?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

Esse é o programa indicado, mas não costumo usá-lo.

Mas observando seu backup, por acaso o conteúdo é um único registro?

Tem esta linha no dump acima:

Código: Selecionar todos

INSERT INTO `teste` VALUES (1,'Inacio');
Se for pra backup eventual, pode ser interessante usar o HeidiSQL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

Na verdade eu estava falando da tabela AGCOM. Mas observei depois que, no banco de dados que eu estava testando, essa tabela AGCOM estava vazia, por isso não copiou. Obrigado pela ajuda.

Não seria pra uso eventual. Eu gostaria de incorporar isso ao meu sistema, pois vou precisar fazer isso com bastante frequência.

Mas, testando mais pra valer agora, surgiram-me ainda algumas dúvidas:

1) Como faço para copiar apenas uma tabela, e não o banco completo? Testei com

Código: Selecionar todos

mysqldump -h provedor -B banco_de_dados -T agcom -u usuário -p
Dá o seguinte erro:

Código: Selecionar todos

mysqldump: --databases or --all-databases can't be used with --tab
Mas eu não estou usando --databases, --all-databases nem --tab.

Tem algum jeito de copiar apenas uma tabela e não o banco completo?

2) Como faço para já incorporar a senha no comando? Tenho usado -p sem a senha, e daí ele pede a senha em seguida, e assim funciona. Mas quando testo -p senha, ele continua pedindo a senha depois.

3) Como incorporar o mysqldump ao meu sistema? Dá pra chamá-lo com RDDINFO? Como? Ou daria pra fazer um .bat?

4) Como faço para restaurar um backup feito com o mysqldump do banco de dados do provedor para um banco de dados localhost?
Inacio de Carvalho Neto
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mysqldump

Mensagem por Dudu_XBase »

Tarde
Já tentou essas formas...
mysqldump -u ... -p... databasename agcom > dumpagecom.sql
ou
mysqldump -u <usuário> -p -h <host> -p databasename agcom > agcom.sql


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

Só complementando....
Eu faço via sistema, via fonte Harbour.
Tá assim há bastante tempo.

E ainda coloquei o programa como serviço no servidor, pra fazer automático e enviar por ftp.

Uso codepage PTISO no Harbour, e latin1 no MySQL.

Restauro o backup por HeidiSQL.
Só dá problema pra restaurar quando a bost. do plugin do Itaú (Gás Tecnologia) está rodando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

Dudu, assim deu certo. Muito obrigado. A única coisa que ainda não funcionou foi colocar a senha direto; ele continua pedindo a senha, mesmo eu tendo colocado -p senha; e dá erro Access denied to database 'senha'. Parece que ele entende que a senha seria o nome da base.

Quintas, daria pra vc passar o caminho das pedras para incorporar o mysqldump no meu sistema Harbour?

E para restaurar, também dá pra usar o mysqldump?
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Mysqldump

Mensagem por alxsts »

Olá!
cjp escreveu:A única coisa que ainda não funcionou foi colocar a senha direto; ele continua pedindo a senha, mesmo eu tendo colocado -p senha
Acho que tem esta pegadinha mesmo. Se você colocar -psenha (sem o espaço entre o -p e a senha), ele não deve pedir a senha. Experimente.

Para embutir em seu sistema, você pode montar a linha de comando e executar:

Código: Selecionar todos

   LOCAL cCommand := "start mysqldump.exe -u<user> -p<password> DBName > C:\DBname.sql" 
      hb_processRun( getEnv( "COMSPEC" ) + " /c " + cCommand ) 
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

Restaurar pelo sistema?
Mas se não tem banco de dados não tem sistema, ou tem?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

De fato, Alexandre, com -p<senha>, sem o espaço, funcionou. Obrigado.

Colocando no meu sistema com o teu código, acontece algo estranho: ele exibe a execução do mysqldump na tela, como se não tivesse o > arquivo.sql. Ele até cria o arquivo, mas ele fica zerado. Vc sabe por que?

Quintas, tem sistema sim. É que a tabela já existe no banco de dados do provedor, e o sistema trabalha com ela, normalmente. Com o mysqldump eu estou pretendendo fazer uma cópia para o banco de dados localhost. Então, estou copiando com o mysqldump para o arquivo .sql, e depois eu preciso criar a tabela no localhost a partir desse arquivo. Entende?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

E algo mais ou menos assim?

Código: Selecionar todos

TRUNCATE TABLE bancolocal.TABELA
INSERT INTO bancolocal.TABELA ( SELECT * FROM bancoweb.TABELA )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

A ideia seria justamente esta. Mas aqui não está funcionando exatamente assim, nem no HeidiSQL.

O que é o truncate? O que ele faz?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

TRUNCATE apenas zera o arquivo, sem apagar a estrutura.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

Descobri isso da pior forma possível: usando o truncate pelo Heidisql, ele apagou toda a tabela do provedor. Graças a Deus que eu tinha backup.

Consegui fazer o mysqldump funcionar pelo meu sistema usando o __run("mysqldump..."). Agora só preciso saber como faço para restaurar o arquivo .sql para minha base localhost.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Mysqldump

Mensagem por cjp »

Pessoal,

Consegui fazer isto funcionar.

Só me resta um problema: ao baixar a tabela com mysqldump, ele bloqueia a tabela. Isso atrapalha minhas demais aplicações.

Alguém saberia me dizer se tem alguma forma de evitar esse bloqueio temporário?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysqldump

Mensagem por JoséQuintas »

No caso de banco de dados relacional, tem que ser assim mesmo.
Se o usuário estiver alterando, as bases de dados no backup podem ficar incompletas, faltando relacionamentos, e se tornarem inválidas.
De nada adianta um backup que depois não funcione.

Dá até pra desativar isso, mas é perigoso.
Isso se estiver falando sobre o backup.

Sobre o restore não tem mesmo, porque o "arquivo" vai estar sendo recriado e "repopulado".
Como permitir incluir, se nem terminou de incluir o que tem no backup.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder