Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta sobre delimitador en MySQL

Estas en el tema de Consulta sobre delimitador en MySQL en el foro de Mysql en Foros del Web. Hola que tal? La cuestión es así: un cliente genera diariamente un dump de su base de datos en .SQL , el cual se sube ...
  #1 (permalink)  
Antiguo 03/08/2011, 15:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 8
Antigüedad: 16 años, 1 mes
Puntos: 1
Consulta sobre delimitador en MySQL

Hola que tal?

La cuestión es así: un cliente genera diariamente un dump de su base de datos en .SQL, el cual se sube automaticamente a un FTP. Desde allí debo tomar el archivo y ejecutar las instrucciones para guardar esa información en una nueva base de datos MySQL.

Para mi sorpresa el archivo .SQL esta generado sin delimitadores (esto será por que tal vez estará generado/exportador desde SQL Server ?), es decir que las instrucciones están separadas por un salto de linea, como por ejemplo:

Código PHP:
DROP TABLE IF EXISTS ACTUALIZACIONES
CREATE TABLE ACTUALIZACIONES 
Fecha datetime default NULLTipoRegistro enum('c','t') default NULL)
INSERT INTO ACTUALIZACIONES VALUES ('2011-08-03 00:05:03','c')
INSERT INTO ACTUALIZACIONES VALUES ('2011-08-03 00:10:02','t'
Ahora mi pregunta es la siguiente:
Como podría indicarle a mi bd MySQL que el delimitador NO es ";" y SÍ un salto de línea? Esto sería para ahorrase un proceso de tener que para cada línea añadir el delimitador ";" por php ya que la bd es bastante grande. De no poderse tomaría esta opción aunque no me convence del todo!

Desde ya muchas gracias, y si alguien me podría sacar la duda sería genial!

Saludos!
  #2 (permalink)  
Antiguo 04/08/2011, 05:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta sobre delimitador en MySQL

Lo mejor sería poder configurar el cliente que genera ese dump para que añada el DELIMITER correspondiente. Eso posiblemente sería más sencillo que todo lo demás.
Por otro lado, cambiar un caracter ";", por uno "\n" puede ser algo peligroso, si el script llega a contener más de una línea para una sentencia dada. Eso podría generar errores de ejecución.

A mi entender, posiblemente la solución más sencilla es procesar el archivo, sin necesidad de leerlo línea a línea, sino como archivo plano, y realizar un reemplazo de "\n" por ";\n" directamente... Posiblemente sea mucho más simple.

De todos modos no me queda claro cómo envias ese script a MySQL.
¿Lo haces por consola?
¿Lo mandas a cargar en un proceso del sistema?
¿Lo procesas, como dices, línea a línea?

¿Cómo lo cargas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/08/2011, 07:09
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Consulta sobre delimitador en MySQL

Seguramente no sea la solución deseada.

Pero has pensado en coger el archivo y con un editor de texto remplazar )\n por );\n Lo que pasa es que si el archivo es muy grande un editor de texto normal no pueda abrirlo
  #4 (permalink)  
Antiguo 04/08/2011, 07:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta sobre delimitador en MySQL

Usando programación no necesita abrirlo con un editor de texto... Simplemente lo manipula como File.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/08/2011, 14:23
 
Fecha de Ingreso: abril-2008
Ubicación: Santa Fe, Argentina
Mensajes: 41
Antigüedad: 16 años
Puntos: 14
Respuesta: Consulta sobre delimitador en MySQL

Nunca indicaste cómo pretendés cargar el archivo.

Con mysqlimport se puede usar el argumento --lines-terminated-by='\r\n' (EOL de Windows). Es más o menos lo mismo con LOAD DATA INFILE, y source desde la consola mysql.

La sección de [URL="http://dev.mysql.com/doc/refman/5.1/en/load-data.html"]LOAD DATA INFILE[/URL] lo explica bien.


Edit: No puedo postear links?

Última edición por Henkka; 04/08/2011 a las 14:42

Etiquetas: php, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:55.