Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Otros entornos y lenguajes > PHP
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 28/06/2017
vroa74's Avatar
vroa74 vroa74 is offline
Miembro
 
Join Date: Jul 2006
Posts: 255
Poder: 21
vroa74 Va por buen camino
Question como exportar una base da datos de mysql atravez de php

me gustaria poder exportar una o unas bases de datos atravez de codigo php.
soy novato en php la verdad es que no se mucho vi alguno ejemplo mas sin embargo los resultados dista de se los que espero
por ejemplo este ejemplo:
PHP Code:

<?php
// variables
$dbhost = 'example.org';
$dbname = 'nombre-base-datos';
$dbuser = 'usuario-base-datos';
$dbpass = 'contraseña-base-datos';

$backup_file = $dbname . date("Y-m-d-H-i-s") . '.gz';

// comandos a ejecutar
$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip > $backup_file";

// ejecución y salida de éxito o errores
system($command,$output);
echo 
$output;
?>
cuando hago la exportacion atravez de phpadmin y comparo con el resultado de este codigo es totalmente diferente.

lo que necesito yo es hacer lo que se hace el el phpadmin para exportar una base de datos atravex de codigo php y la verdad no se como hacerlo

Last edited by vroa74 : 28/06/2017 at 21:56.
Reply With Quote
  #2  
Old 03/07/2017
Ñuño Martínez's Avatar
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Join Date: Jul 2006
Location: Ciudad Catedral, Españistán
Posts: 6,025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Eso es porque "mysqldump" es un programa, no un comando SQL (o más exactamente, del DDL).

Puede hacerse todo vía SQL/DDL. La estructura de todas las bases de datos está almacenada en una base de datos, concretamente en information_schema.COLUMNS. Es decir, que puedes obtener la estructura completa con:
Código SQL [-]
  SELECT *
    FROM COLUMNS
  WHERE TABLE_SCHEMA = '%base_de_datos%';
A partir de los datos obtenidos puedes reconstruir las sentencias DDL de creación de tablas ("CREATE TABLE ..."). A continuación haces consultas para obtener los datos de cada tabla, y ya tienes todo lo necesario para exportar tu base de datos.

Evidentemente tienes que conectarte a la base de datos "information_schema", lo cual sólo puede hacerse con un usuario con los permisos adecuados.
Reply With Quote
  #3  
Old 26/07/2017
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Algunas observaciones:
  • Aunque mysqldump es un programa externo, sí que podría invocarse desde php. De hecho system o shell_exec deberían funcionar y habría que ver en específico qué resultado le da al compañero y así determinar qué falla.

  • Para usar information_schema no hace falta tener permisos especiales. information_schema consiste de "vistas" especiales que muestran información según el usuario que las pida. Si el usuario tiene acceso a las bases de datos X, Y y Z entonces sólo verá información des esas bases.

  • Reconstruir la estructura de una tabla a partir de information_schema me parece una tarea titánica, sobre todo cuando podemos hacer:

    Código SQL [-]
    show create table tabla


En cuanto a porqué le falla no estoy seguro, pero me parece que no se puede concatenar la salida de mysqldump (o de ningún comando para tal caso) con gzip. Habría primero que crear el archivo de salida:

Code:
mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  > backup.sql
y luego pasarlo a gzip:

Code:
gzip backup.sql
Cada cosa con system o shell_exec.

LineComment Saludos
Reply With Quote
  #4  
Old 26/07/2017
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Corrijo:

En mi versión de linux sí se puede concatenar con gzip pero usando la opción -f:

Code:
mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip -f > $backup_file
LineComment Saludos
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
¿cómo conectar lazarus a una base de datos access y a Mysql? Master23 Varios 3 01/09/2010 15:53
como conectar una base de datos online MySQL con un programa local? cocute Conexión con bases de datos 7 06/01/2010 13:57
como conectar una base de datos hecha en mysql con delphi 7 magnus33 Conexión con bases de datos 3 25/06/2008 09:31
cómo almacenar enlaces a videos en mi base de datos mySQL carmelina SQL 1 20/05/2008 13:05
Como conectarme a una base de datos como postgres o mysql?? marys MySQL 4 08/05/2003 11:34


All times are GMT +2. The time now is 11:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi