Foros del Web » Programando para Internet » PHP »

Importar datos en MySql

Estas en el tema de Importar datos en MySql en el foro de PHP en Foros del Web. Hola gente. Estuve leyendo otros temas relacionados, pero no se ajustan exactamente a mi caso. Por otro lado debo decir que soy un perfecto principiante ...
  #1 (permalink)  
Antiguo 10/01/2012, 15:41
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Importar datos en MySql

Hola gente. Estuve leyendo otros temas relacionados, pero no se ajustan exactamente a mi caso. Por otro lado debo decir que soy un perfecto principiante en estos temas, con lo cual como decia Forest Gump: "Expliquenmelo como si fuera idiota" jajajaja (o algo asi)

Tengo una pagina que toma datos de un archivo txt con un formato de este tipo:

001|campo1|campo2|campo3|campo4|campo5
002|campo1|campo2|campo3|campo4|campo5
003|campo1|campo2|campo3|campo4|campo5 etc.

(Si, los distintos campos estan separados por "|" [pipe])

Ahora yo deseo crear una base de datos MySql y en una tabla importar esos datos, ya que son muchos y si los tengo que escribir todos voy a estar hasta fines del 2015...

Como se puede hacer esto?
Desde ya muchas gracias por cualquier ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 10/01/2012, 20:11
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 11
Respuesta: Importar datos en MySql

Pues te recomiendo que leas de:

mysql_connect()
mysql_query()
mysql_fetch_array()
while()
y funciones para dividir string.

Saludos ;)
  #3 (permalink)  
Antiguo 10/01/2012, 21:25
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Importar datos en MySql

Holas,

Esto creo que te podria ayudar muchisimo:

http://www.forosdelweb.com/wiki/PHP:..._CSV_en_PHP%3F

No te desanimes, si es posible hacerlo.
Saludos
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 11/01/2012, 07:08
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

Cita:
Iniciado por ihmps Ver Mensaje
Pues te recomiendo que leas de:

mysql_connect()
mysql_query()
mysql_fetch_array()
while()
y funciones para dividir string.

Saludos ;)
No entiendo bien que me queres decir....estos son camandos de php, los conozco, ya los he usado, pero no veo como se relacionan con lo que yo quiero hacer.
Quiza no me explique bien... Yo ya se como crear una BD MySql, como conectar a ella pore php, como hacer consultas a la misma etc...

Lo que quiero hacer ahora y no se como, es importar los datos de un archivo txt, los cuales se allan separados por pipes "|" a una tabla de una base de datos ya creada sin necesidad de escribirlos todos manualmente, ya que son muchos.

Intente hacerlo a traves de PHPMyAdmin pero resulta ser que el archivo no tiene el formato de datos esperado por MySql.

Gracias por tu respuesta.
  #5 (permalink)  
Antiguo 11/01/2012, 07:09
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

Cita:
Iniciado por gildus Ver Mensaje
Holas,

Esto creo que te podria ayudar muchisimo:

[url]http://www.forosdelweb.com/wiki/PHP:%C2%BFC%C3%B3mo_leer_CSV_en_PHP%3F[/url]

No te desanimes, si es posible hacerlo.
Saludos
Pero eso es para leerlo en PHP, y yo lo que quiero es importarlo a MySql.

Gracias por tu respuesta.
  #6 (permalink)  
Antiguo 11/01/2012, 07:19
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 6 meses
Puntos: 140
Respuesta: Importar datos en MySql

Bueno.
Se trata de transformar
001|campo1|campo2|campo3|campo4|campo5
en
('001','campo1','campo2','campo3','campo4','campo5 '),

Supongo que con str_replace o similar puedes conseguir algo.

Sino, a lo bestia, en notepad:

Reemplazar | por ',' (reemplazar todo)

Y luego manualmente, linea a linea:
copias ('
y Control+V flechaabajo flechaizquierda flechaizquierda

y lo mismo para finalizar cada linea, para poner '),
A 2 segundos por linea, x 2, puedes calcular cuanto tiempo te llevaría.


Finalmente añades al inicio

INSERT INTO `loquesea` ( loscampos )
VALUES

y no te olvides que la última linea acaba en ;

Una vez todo, sólo te queda hacer la consulta en myphpadm.

En total, yo creo que mil entradas, en media hora lo tienes :P

Saludos

Edito:
Viendo el ejemplo que te ponen en el enlace, esto mismo que te digo creo que lo puedes hacer de forma automática... miratelo bien y las funciones que usan....
La idea es convertir tu archivo de texto en otro archivo con el formato correcto para hacer una consulta e insertar datos en una tabla.

Última edición por charlyalegret; 11/01/2012 a las 07:28
  #7 (permalink)  
Antiguo 11/01/2012, 09:00
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

Cita:
Iniciado por charlyalegret Ver Mensaje
Bueno.
Se trata de transformar
001|campo1|campo2|campo3|campo4|campo5
en
('001','campo1','campo2','campo3','campo4','campo5 '),

Supongo que con str_replace o similar puedes conseguir algo.

Sino, a lo bestia, en notepad:

Reemplazar | por ',' (reemplazar todo)

Y luego manualmente, linea a linea:
copias ('
y Control+V flechaabajo flechaizquierda flechaizquierda

y lo mismo para finalizar cada linea, para poner '),
A 2 segundos por linea, x 2, puedes calcular cuanto tiempo te llevaría.


Finalmente añades al inicio

INSERT INTO `loquesea` ( loscampos )
VALUES

y no te olvides que la última linea acaba en ;

Una vez todo, sólo te queda hacer la consulta en myphpadm.

En total, yo creo que mil entradas, en media hora lo tienes :P

Saludos

Edito:
Viendo el ejemplo que te ponen en el enlace, esto mismo que te digo creo que lo puedes hacer de forma automática... miratelo bien y las funciones que usan....
La idea es convertir tu archivo de texto en otro archivo con el formato correcto para hacer una consulta e insertar datos en una tabla.
Desde ya muchas gracias por tu ayuda. Hice todas las modificaciones al archivo de text con los parentesis, comillas, comas y punto y coma final, pero al intentar importar desde mysql tengo un error de syntaxis, el siguiente:

MySQL said:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''site','folder','title','description','vid/pics','vid size','vid type','category' at line 1

Lo que tengo en line1 es esto:

INSERT INTO FHG ('site','folder','title','description','vid/pics','vid size','vid type','category','date added','content')
VALUES

donde 'site','folder','title','description','vid/pics','vid size','vid type','category','date added','content' son los nombres de los campos de la tabla FHG. Probe con y sin las comillas, pero me da error lo mismo.

Creo que estoy cerca...estuve leyendo el manual de mysql para ver la syntaxis correcta, pero no logro entender en que me equivoco...como dije antes en esto me siento que soy Forest Gump....

Muchas gracias nuevamente.
  #8 (permalink)  
Antiguo 11/01/2012, 09:25
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

BTW.... Este tema no le ha gustado a 1 personas ¿¿¿ ????

Me encantaria saber a quien no le gusto y porque? Y de paso pregunto a moderadores y/o administradores.....hice algo mal? Acaso estos foros no son para pedir ayuda? Yo desde ya estoy plenamente agradecido hacia el foro en general y a quienes me han brindado ayuda desinteresadamente, independientemente de que luego esta me haya o no servido para solucionar mi duda. Por mi parte no esperen que jamas ayude a nadie, porque no se casi nada de nada...soy un simple voluntarioso que se mete a hacer cosas y a base de prueba y error muchas veces consigo que me funcionen y algunas veces no..en esos casos pido ayuda si tengo a mano alguien para hacerlo, como es el caso de este foro. No es mi intencion "molestar" ni incomodar a nadie, ni creo estar rompiendo ninguna regla del foro...

Nuevamente, muy agradecido por la ayuda que me brindan, y a quien voto negativo mi tema realmente me gustaria que en lugar de tan solo votar negativo me explique que cosa no le gusto asi uno puede modificar y mejorar por el bien de toda la comunidad.
  #9 (permalink)  
Antiguo 11/01/2012, 09:31
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 6 meses
Puntos: 140
Respuesta: Importar datos en MySql

Hola!
No logro ver el error en la línea que has mostrado, cabe decir mis conocimientos de sql son mínimos...
Sólo que compruebes que la tabla se llama FHG (en mayúsculas) y no esté en minúsculas, que no sea ese el error... Si no a ver si alguien más experto te puede hechar una mano.

Por otro lado, no te sulfures por los votos negativos. Puedes ver quien te lo ha puesto "preferencias ->notificaciones". En este mundo, hay gente de todo. Mi opinión: ni caso. No por eso debes dejar de participar, responder o preguntar. La de veces que respondes o intentas ayudar, y ni las gracias, ni un ok me funciona o no me funciona... pero si no seguimos colaborando, no podremos ayudar a los que sí que saben agradecer ;)

Saludos y suerte!


Edito:

He investigado un poco, mediante prueba y error. Obtengo el mismo error que tu cuando uso en esa frase inicial comillas tipo '
No me da ningún error si NO uso comillas o si uso ´ (tilde). En el resto de lineas (después de values), puedo usar las comillas ' sin problemas.

Ej:

INSERT INTO FHG (`site`,`folder`,`title`,`description`,`vid/pics`,`vid size`,`vid type`,`category`,`date added`,`content`)
VALUES etc (ahora sí, al menos a mí, me funcionan los campos con comillas ' )

Suerte

Última edición por charlyalegret; 11/01/2012 a las 09:38
  #10 (permalink)  
Antiguo 11/01/2012, 10:17
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Importar datos en MySql

Como buena práctica evita el uso de espacios, pleclas y carácteres especiales (excepto el _ ) en los nombre de tus campos, ejemplo:

vid/pics -> vid_pics
vid size -> vid_size
vid size -> vid_size

Saludos.

PD: Si a alguien no le gusta, pos no le gusta. No se acabará el mundo por ello.
__________________
Páginas web de alta calidad y hechas a la medida.
  #11 (permalink)  
Antiguo 11/01/2012, 10:34
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

charlyalegret y el_quick, con respecto a mi comentario "off topic"...tienen razon...no hay que darle mas importancia a las cosas que la que estas tienen..en este caso: ninguna...Pero parece ser que a pesar de los años me vengo viejo pero lejos de perder las mañas me vengo mas mañoso....jajajaja. Me enferman las malas actitudes...soy un idealista que cree que un mundo perfecto es posible...espero no terminar como Lennon algun dia...

Un abrazo y muchas gracias por toda vuestra ayuda....

PD: Ya probe lo de las ` en lugar de ' pero sigue sin funcionar...ahora voy a probar cambiando los nombres de los campos como me sugirio el_quick...ya se me habia cruzado por la cabeza esa posibilidad.

Nuevamente muchas gracias a todos.
  #12 (permalink)  
Antiguo 11/01/2012, 11:25
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

Bueno arregle eso de los espacios en nombres de campos y tambien detecte algunos ' extras en el texto del archivo en palabras tales como don't y arregle eso tambien.

Ahora el error que me da es:

#1136 - Column count doesn't match value count at row 120

Es un error de numero de columnas, supuestamente no coinciden la cantidad de columnas que deseo importar con las existentes en la tabla, es correcto?

Sin embargo no es asi... y porque en row 120? Con Row 120 se refiere a la linea 120 de mi archivo de texto?
  #13 (permalink)  
Antiguo 11/01/2012, 11:34
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Importar datos en MySql

Si, así es, es un error con el número de columnas...
... Y no es estrictamente la línea 120 del archivo de texto, puede set de datos 120 pues el mysql no sabe como tu editor de textos enumero las filas :D, pero el error debe estar cerca de la línea 102, busca algo inusual cerca de esa línea. posiblemente sea un ' o algún caracter que te esté generando más columnas de las previstas en ese registro.

Saludos
__________________
Páginas web de alta calidad y hechas a la medida.
  #14 (permalink)  
Antiguo 11/01/2012, 11:38
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 6 meses
Puntos: 140
Respuesta: Importar datos en MySql

mmmm
1. para las comillas, le pones 2 i solucionado (por ejemplo, pones don''t en lugar de don't. OJO: són dos comillas simples, y no una doble!!)
2. ni idea de si se refiere a la linea 120 (o a la entrada 120)... asegúrate que no sea un problema con las comillas como el de don't!!
3. Al menos cuando yo he usado phpmyadm., y cuando se da un error en alguna linea, a mí me ha insertado todas las líneas anteriores hasta la del error. Si és así, fíjate hasta qué linea te ha insertado para ver la siguiente que te falta, ahí está el error.
Pero eso, en casos en errores en alguna de las entradas, si se trata de otro error (como alguna vez que no he finalizado con ;), entonces no me inserta ninguna linea.

Como digo antes, mis conocimientos en sql son limitados, si algun experto puede agregar algo, mejor!!
Suerte

Última edición por charlyalegret; 11/01/2012 a las 11:39 Razón: Vaya, por 4 minutos ;P
  #15 (permalink)  
Antiguo 11/01/2012, 11:50
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

Asi es muchachos...algun caracter esta molestando por ahi, lo que pasa que en tantos registros lo que veo es una sopa de letras y nada mas...se hace muy dificil encontrar el error....eso si, tendre que ponerme a verlo con mucho detenimiento....

charlyalegret: Todos los intentos anteriores donde me dio error, no me inserto ninguna fila...

Se me ocurrio eliminar todas las lineas del archivo excepto la primera y Voila!!! Me insertó un registro correctamente!!

Asi que ahora todo se reduce a armarme de paciencia y ver donde esta el o los caracteres molestos en la gran sopa de letras que tengo ahi
creo que voy a dividir en archivo en multiples archivos de no mas de 20 lineas cada uno...eso deberia simplificar las cosas :)

Muchas gracias a ambos charly y el_quick, vuestra ayuda ha sido muy util! Y para los "mala onda"...tengan en cuenta que aca se trata de ayudar...no es obligacion hacerlo, pero es el objetivo del foro... Abrazos para todos!!
  #16 (permalink)  
Antiguo 11/01/2012, 12:24
 
Fecha de Ingreso: abril-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Respuesta: Importar datos en MySql

HECHO!!!

El tema se puede cerrar. Nuevamente muchas gracias a los que brindaron su ayuda en forma desinteresada.
  #17 (permalink)  
Antiguo 11/01/2012, 12:29
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Importar datos en MySql

A la orden y pongo +1 en este tema, pues puede ser de interés para algún otro usuario con este tipo de problemas.
Todos tenemos diferentes problemas, algunas más básicas y otras más complejas, pero problemas al fin y al cabo, si estamos aquí nos toca ayudar.

PD: Si el que pregunta quiere todo en la boca y peor aún si el trabajo es bastante, tonces -1!!!
__________________
Páginas web de alta calidad y hechas a la medida.

Etiquetas: mysql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:59.