Clipper On Line • Ver Tópico - Mysqldump

Mysqldump

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Mysqldump

Mensagempor cjp » 09 Out 2015 17:01

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:

-- 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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor JoséQuintas » 09 Out 2015 19:38

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:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mysqldump

Mensagempor cjp » 10 Out 2015 14:44

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

mysqldump -h provedor -B banco_de_dados -T agcom -u usuário -p


Dá o seguinte erro:

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor Dudu_XBase » 14 Out 2015 15:13

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




Dudu_XBase
Membro Master

Membro Master
 
Mensagens: 1036
Data de registro: 25 Ago 2003 16:55
Curtiu: 24 vezes
Mens.Curtidas: 9 vezes

Mysqldump

Mensagempor JoséQuintas » 14 Out 2015 19:46

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mysqldump

Mensagempor cjp » 14 Out 2015 23:39

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor alxsts » 15 Out 2015 00:59

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:
   LOCAL cCommand := "start mysqldump.exe -u<user> -p<password> DBName > C:\DBname.sql" 
      hb_processRun( getEnv( "COMSPEC" ) + " /c " + cCommand )
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Mysqldump

Mensagempor JoséQuintas » 15 Out 2015 10:05

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mysqldump

Mensagempor cjp » 15 Out 2015 14:45

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor JoséQuintas » 15 Out 2015 14:53

E algo mais ou menos assim?

TRUNCATE TABLE bancolocal.TABELA
INSERT INTO bancolocal.TABELA ( SELECT * FROM bancoweb.TABELA )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mysqldump

Mensagempor cjp » 15 Out 2015 15:05

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor JoséQuintas » 15 Out 2015 15:23

TRUNCATE apenas zera o arquivo, sem apagar a estrutura.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mysqldump

Mensagempor cjp » 20 Out 2015 16:43

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: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor cjp » 19 Jan 2016 23:48

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysqldump

Mensagempor JoséQuintas » 20 Jan 2016 20:43

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Bing [Bot] e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro