Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Generar Script MySQL (https://www.clubdelphi.com/foros/showthread.php?t=17943)

bustio 26-01-2005 18:56:37

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.

roman 26-01-2005 19:19:08

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

bustio 26-01-2005 19:38:59

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?

edgusano 26-01-2005 21:47:06

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.

bustio 26-01-2005 22:24:02

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

roman 26-01-2005 22:35:44

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

bustio 27-01-2005 02:50:23

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!!)

roman 27-01-2005 18:17:35

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

bustio 28-01-2005 13:43:18

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.

roman 28-01-2005 16:49:04

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

edgusano 29-01-2005 00:07:57

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.

bustio 09-02-2005 07:59:15

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

roman 09-02-2005 14:56:13

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


La franja horaria es GMT +2. Ahora son las 20:37:18.

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