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

MySQL y Archivos .TXT

Estas en el tema de MySQL y Archivos .TXT en el foro de Mysql en Foros del Web. Buenas a toda la comunidad! Escribo porque tengo dudas... muchas dudas... una es la siguiente, tengo varias tablas creadas en MySQL, por ejemplo: CREATE TABLE ...
  #1 (permalink)  
Antiguo 15/03/2010, 22:10
 
Fecha de Ingreso: diciembre-2008
Ubicación: Cali, Colombia
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 1
MySQL y Archivos .TXT

Buenas a toda la comunidad!

Escribo porque tengo dudas... muchas dudas... una es la siguiente, tengo varias tablas creadas en MySQL, por ejemplo:

CREATE TABLE progacademico (
Cod_Prog INT NOT NULL,
Nom_Prog VARCHAR(50) NOT NULL,
PRIMARY KEY(Cod_Prog)
)
TYPE=InnoDB;

CREATE TABLE tutor (
ID_Tutor INTEGER UNSIGNED NOT NULL,
Nom_Tutor CHAR NOT NULL,
Email_Tutor VARCHAR(100) NOT NULL,
PRIMARY KEY(ID_Tutor)
)
TYPE=InnoDB;

Y otras tantas con claves foraneas y todo ese cuento de las relaciones. El problema es el siguiente, tengo en archivos de texto (.txt) los datos que deben contener las tablas creadas, y los subo con LOAD DATA sin ningún problema usando algo como: mysql> LOAD DATA LOCAL INFILE "C:/pruebadatos.txt" INTO TABLE pruebatabla;

El problema es que necesito armar los archivos en formato texto pero con todas las tablas dentro de un solo .txt, separando con punto y coma (;) cada tabla y subir la información con la instrucción LOAD DATA...

Como dije anteriormente, yo los tengo separados y los subo sin problema, pero no sé como subir el archivo .txt con todas las tablas dentro de el mismo archivo¿?

Agradezco muchisimo sus respuestas
  #2 (permalink)  
Antiguo 16/03/2010, 06:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: MySQL y Archivos .TXT

mmmm
Creo que no se puede.

Te tocaría llamar múltiples veces el load data para hacer la migración.

Creo que desde mysql no hay una solución automatizada.
Cualquier idea que se me ocurra te la comento.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 16/03/2010, 07:19
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: MySQL y Archivos .TXT

No me queda claro algo:
¿ Lo que tienes es un script para crear las tablas, más un script para cargar los datos, y lo que quieres es un sólo script para crear las tablas y cargar datos?

Partamos que LOAD DATA no se usa para crear las tablas, sino para cargar (poblar) de datos tablas preexistentes.

¿Podrás explicar un poco mejor qué es lo que debes hacer?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 16/03/2010, 09:51
 
Fecha de Ingreso: diciembre-2008
Ubicación: Cali, Colombia
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: MySQL y Archivos .TXT

Cita:
Iniciado por huesos52 Ver Mensaje
mmmm
Creo que no se puede.

Te tocaría llamar múltiples veces el load data para hacer la migración.

Creo que desde mysql no hay una solución automatizada.
Cualquier idea que se me ocurra te la comento.

saludos
Gracias por la respuesta!!!

Hasta el momento solo habia manejado el LOAD DATA para subir datos a las tablas ya creadas, pero subia un archivo por tabla, ahora que me dicen que subir todos los contenidos desde el mismo archivo no se me ocurre como hacerlo :(
  #5 (permalink)  
Antiguo 16/03/2010, 09:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Cali, Colombia
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: MySQL y Archivos .TXT

Hola gnzsoloyo! Gracias por la respuesta

No quiero subir las tablas creando su script, solo llenarlas de información, para eso el LOAD DATA, solo para cargar datos el ellas...

Como dije antes, hasta el momento solo habia manejado el LOAD DATA para subir datos a las tablas ya creadas, pero subia un archivo de .txt con datos por una de las tablas ya creadas, ahora que me dicen que debo subir todos los datos de las tablas no por archivos .txt separados por cada tabla, sino que desde el mismo archivo .txt subir los datos de todas las tablas al mismo tiempo, no se me ocurre como hacerlo :(

Gracias!
  #6 (permalink)  
Antiguo 16/03/2010, 10:28
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: MySQL y Archivos .TXT

Es básicamente un problema de cómo implementar esos datos en un sólo TXT.
Si entendí bien, debes subir un sólo TXT en donde vayan diferentes bloques de datos para diferentes tablas.
Es posible hacer eso, pero el parseo del TXT lo deberás implementar vía programación, ya que la única solución es usar tags o etiquetas que permitan a una función, por ejemplo en PHP, fragmentar el texto y generar las cargas.

Yo, personalmente, me inclinaría a un sript de SQL que contenga los inserts a cada tabla, preparados como INSERTs masivos, en ulgar de un TXT para usar con LOAD DATA.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 16/03/2010, 12:24
 
Fecha de Ingreso: diciembre-2008
Ubicación: Cali, Colombia
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: MySQL y Archivos .TXT

Agradezco la respuesta!!!

No puedo usar PHP, solo es permitido el uso de mysql para esta actividad, pero me podrías decir como es un sript de SQL que contenga los inserts a cada tabla? Ah! Y solo puedo usar LOAD DATA...

Gracias!
  #8 (permalink)  
Antiguo 16/03/2010, 13:46
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: MySQL y Archivos .TXT

Explícame un poco lo de que solamente puedes usar LOAD DATA.
¿Es un requerimiento de sistema, de hosting, o es una asignatura en curso?

Un script en SQL es básicamente un backup, pero de sólo datos. Las tablas se conocen y el script contiene un INSERT para cada tabla seguido de VALUE con un conjunto de N grupos de valores, por cada INSERT declarado.
Este script se envía a MySQL desde DOS o usando la consola de MySQL con el comando SOURCE nombreDelArchivo;
Al cargarse se ejecuta como batch y los inserts corren unodetras de otro sin detenerse.

En estos momentos estoy haciendo eso, precisamente, en una aplicación porque el LOAD DATA tiene un límite dado por el valore de la variable max_allowed_packet que me bloquea cargas muy grandes, y no he podido resolverlo con sólo aumentar su valor, ni siquiera poniéndolo a 1 Gb.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 16/03/2010, 18:04
 
Fecha de Ingreso: diciembre-2008
Ubicación: Cali, Colombia
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: MySQL y Archivos .TXT

Gracias gnzsoloyo!

Bueno lo de solo puedo usar LOAD DATA es porque así lo exige la actividad que estoy realizando, es un proyecto en conjunto y a mi me tocó la parte de manejo de bases de datos solo usando MYSQL y PHPMYADMIN en un localhost, aún no hemos cargado información a un servidor.

Hasta el momento lo he hecho con LOAD DATA para subir la información para cada una de las tablas creadas. Pero ni idea cuando dicen que se deben subir los datos de las tablas, todos contenidos en un solo archivo de texto y la informacion de cada tabla separada con punto y coma (;)...

Gracias por su tiempo ;)

Etiquetas: txt
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 06:12.