Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Generar Script MySQL

Hola!
Creo que mi pregunta si esta dificil esta vez. Tengo que generar un script con la estructura de una BD de MySQL, pero que este Script pueda ser leido luego por el MySQL y por supuesto, permitir importar la BD. Existe alguna instruccion que me permita hacer esto en MySQL o tengo que programar el Script?? En cualquiera de los casos./... alguien sabe como se hace esto? Alguien ha hacho algo igual que me pudiera facilitar alguna idea o segmento de codigo?

Gracias!!!


Lazaro Bustio Martinez.
Responder Con Cita
  #2  
Antiguo 26-01-2005
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
Cosas que te pueden servir:
  • show create database database - regresa la instrucción sql para crear la base (CREATE DATABASE...)
  • show tables from database - te regresa una tabla con los nombre de las tablas de la base.
  • show create table database.table - te regresa la instrucción sql para crear la tabla (CREATE TABLE ...)

Todas éstas son consultas sql que puedes hacer con MySql.

// Saludos
Responder Con Cita
  #3  
Antiguo 26-01-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Generar Script

GRacias Roman..!!! acabo de probar estas ideas qeu me diste sobre el MySQL funcionan para lo que deseo. COn estas isntrucciones obtengo el script para la estructura de las tablas y demas, ahora, no habra algo similar para obtener los datos de las tablas?
Responder Con Cita
  #4  
Antiguo 26-01-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
para hacer esto debes utilizar el mysqldump, este se encuentra en la carpeta bin de la instalacion del mysql, este te genera el script de la base datos, ademas podes especificar si quieres nada mas la estructura o la estructura con los datos que tienen las tablas, ademas este script lo genera en puras sentencias sql.
__________________
Optimus Prime
Responder Con Cita
  #5  
Antiguo 26-01-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Respondiendo....

Cita:
Empezado por edgusano
para hacer esto debes utilizar el mysqldump, este se encuentra en la carpeta bin de la instalacion del mysql, este te genera el script de la base datos, ademas podes especificar si quieres nada mas la estructura o la estructura con los datos que tienen las tablas, ademas este script lo genera en puras sentencias sql.

Eso que me dices me parece muy bien, es justo lo que deseo hacer.. pero...
Como uso el MySQLDUMP?? ya lo ejecute y me sale una ventana negra estilo CMD(MSDOS) donde no puedo ver nada por que se cierra muy rapido. Supongo que debo pasarle algunos parametros a esa aplicacion.. pues en todo caso, me interesa poder decidir hacia que lugar genero el Script, la carpeta donde deseo ubicarlo y el nombre que quiero darle...

Me podrias indicar un poco mas????
Responder Con Cita
  #6  
Antiguo 26-01-2005
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
Yo pensaba que querías hacer tú un código para generar el respaldo.

Para usar el mysqldump lo más cómodo es que abras primero una ventana de ms-dos y desde ahí lo ejecutes:

mysqldump -uusuario -p database > respaldo.sql

Cuando quieras restaurarlo basta que hagas

mysql -uusuario -p database < respaldo.sql

// Saludos
Responder Con Cita
  #7  
Antiguo 27-01-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Roman tiene Razon

Pues si, lo que yo necesito hacer es crear un algoritmo, un codigo que me permita hacer el backup de mi BD.
Ya con la idea qeu me diste(Roman) puedo generar las estructuras de las tablas y de la BD en general, lo que me faltaria ahora es como hacer para crear el segmento del Script que le da tratamiento especifico a los datos contenidos en las tablas.
Cuando vi la idea del mySQLDUMP lo qye pense es qeu desde el delphi mismo se le podia mandar a ejecutar, y luego, mediante algunos parametros, qye el mismo DUMP generara el Script.. pero segun veo esto no es asi de sencillo.
Voy a tener que crear yo mismo el script completo. Me das alguna sugerencia para la hora de hacer la seccion que permite hacerle el tratamiento a los datos??

GRacias a todos de antemano!
(no se qyue seria de mi sin este foro!!)
Responder Con Cita
  #8  
Antiguo 27-01-2005
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
Si el respaldo lo haces en el servidor entonces hay una manera muy sencilla de hacerlo:

Código SQL [-]
select * from tabla
into outfile 'tabla.txt'

Esto te guardará todos los datos de la tabla tabla en el archivo tabla.txt. El formato con que lo guarda es el de campos separados por tabulaciones pero puedes especificarle otro formato (por ejemplo, separado por comas).

Para recuperar el respaldo, una vez que hayas creado la tabla puedes usar:

Código SQL [-]
load data infile 'tabla.txt'
into table tabla

Si no especificas ninguna ruta, creo que el archivo lo guarda en el mismo directorio donde está la base de datos. Si especificas una ruta debes utilizar '/' en lugar de '\' para separar los directorios.

Si el respaldo lo haces desde otra máquina, aun puedes usar esta técnica pero el usuario debe tener derechos en MySql para crear archivos lo cual puede no ser muy buena idea por razones de seguridad.

Otra manera de hacer el respaldo es crear tú mismo un archivo .sql con las instrucciones INSERT necesarias (una por cada registro de la tabla). Esto debe ser sencillo: simplemente recorres la tabla y por cada registro formas una cadena:

INSERT INTO tabla values(valor1, valor2, valor3,...);

donde valor1, valor2, valor3, etc. son los valores entre comillas de los campos para ese registro. Tales valores los obtienes recorriendo el arreglo Fields del DataSet que uses para acceder a la tabla de MySql.

Cada una de estas líneas la insertas en el archivo de texto.

Para recuperar el respaldo lees este archivo línea a línea ejecutando cada una.

// Saludos

Última edición por roman fecha: 27-01-2005 a las 18:23:28.
Responder Con Cita
  #9  
Antiguo 28-01-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Gracias Roman!

Me ha parecido estupenda esa ayuda que me has dado...
Ahora, solo necesito saber donde puedo encontrar informacion sobre el MySQL, sus instrucciones y demas pues el que tengo es solo de
SQL SERVER 2000 y hay muchas cosas que no las tiene el MySQL.
De cualquier manera, me han servido de mucha ayuda tus comentarios.
Responder Con Cita
  #10  
Antiguo 28-01-2005
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
Cita:
Empezado por bustio
Ahora, solo necesito saber donde puedo encontrar informacion sobre el MySQL, sus instrucciones y demas
Muy fácil, el mismísimo manual de MySql

Si buscas por esa página me parece que también hay versión en español.

// Saludos
Responder Con Cita
  #11  
Antiguo 29-01-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
Sabes que lo de generar el backup de la base de datos con el mysqldump no es tan complicado como parece, el unico inconveniente que le veo yo es que te hayan movido el ejecutable de este de ubicacion, pero igual antes de realizar la labor de crear el backup, pues buscarias ese archivo en el equipo.
Si abres una consola de DOS de la siguiente manera podras ver que parametros acepta este, entre los cuales esta el -r para indicar la ubicacion en la cual deseas que se aloje el resultado del backup.
----------------------
VENTANA DOS.
>(directorio en donde se encuentra la carpeta bin de mysql)/mysqldump --help
----------------------
Ya desde tu codigo llamarias este ejecutable pasandole los parametros que desees y te generaria el script.
__________________
Optimus Prime
Responder Con Cita
  #12  
Antiguo 09-02-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Respondiendo....

Cita:
Empezado por roman
Si el respaldo lo haces en el servidor entonces hay una manera muy sencilla de hacerlo:

Código SQL [-]
select * from tabla
into outfile 'tabla.txt'

........
Para recuperar el respaldo, una vez que hayas creado la tabla puedes usar:

Código SQL [-]
load data infile 'tabla.txt'
into table tabla
Gracias Roman, utilice estas ideas qeu me das y me resultan bien.. ahora pasa lo siguisnte:
Yo cree esta consulta para poder obtener los datos de mi BD en SCV, solo que no me deja Annadirle al fichero de salida los valores de las demas tablas pues me dice que el fichero ya existe. Podrias tu o alguien explicarme como le hago este "Append" al fichero desde el MySql?

Esto fue lo que hice:
Código SQL [-]
SELECT * INTO OUTFILE 'c:/temp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM tematicas;


y esta es la respuesta del Server:

Código SQL [-]
File 'c:/temp/result.text' already exists
Responder Con Cita
  #13  
Antiguo 09-02-2005
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
Cita:
Empezado por bustio
como le hago este "Append" al fichero desde el MySql?
No se puede. El manual de MySql específicamente dice:

Cita:
The SELECT ... INTO OUTFILE 'file_name' form of SELECT writes the selected rows to a file. The file is created on the server host, so you must have the FILE privilege to use this syntax. The file cannot currently exist, which among other things prevents files such as /etc/passwd and database tables from being destroyed.
// Saludos
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 17:39:34.


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