Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2017
Avatar de vroa74
vroa74 vroa74 is offline
Miembro
 
Registrado: jul 2006
Posts: 254
Poder: 18
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:
Código PHP:

<?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

Última edición por vroa74 fecha: 28-06-2017 a las 22:56:13.
Responder Con Cita
  #2  
Antiguo 03-07-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñ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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 26-07-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: 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:

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

Código:
gzip backup.sql
Cada cosa con system o shell_exec.

LineComment Saludos
Responder Con Cita
  #4  
Antiguo 26-07-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: 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:

Código:
mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip -f > $backup_file
LineComment Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿cómo conectar lazarus a una base de datos access y a Mysql? Master23 Varios 3 01-09-2010 16:53:42
como conectar una base de datos online MySQL con un programa local? cocute Conexión con bases de datos 7 06-01-2010 14:57:02
como conectar una base de datos hecha en mysql con delphi 7 magnus33 Conexión con bases de datos 3 25-06-2008 10:31:46
cómo almacenar enlaces a videos en mi base de datos mySQL carmelina SQL 1 20-05-2008 14:05:04
Como conectarme a una base de datos como postgres o mysql?? marys MySQL 4 08-05-2003 12:34:08


La franja horaria es GMT +2. Ahora son las 00:31:06.


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