Load data infile

He logrado extraer datos de un .txt utilizando el comando LOAD DATA INFILE. Pero deseo agregar esos datos sólo a los campos que cumplan una condición determinada (Por ejemplo los que tengan Nombre=María).
De esta forma los datos se deberían agregar solo a los registros donde el nombre es María, y no a los otros.
¿Sugerencias?

1 Respuesta

Respuesta
1
Si ves la sintaxis del LOAD (MySQL), no hay nada parecido a un WHERE para controlar como se cargan los datos.
[] http://dev.mysql.com/doc/refman/5.1/en/load-data.html
Pero como el archivo que lee la sentencia LOAD, puede ser un "pipe", podrías hacer algo parecido a esto:
$ mkfifo /tmp/datos.p
$ chmod 666 /tmp/datos.p
$ grep "Maria" /tmp/origen.txt > /tmp/datos.p
$ mysql -e "LOAD DATA INFILE '/tmp/datos.p' INTO TABLE mitabla"
Quizás "grep" no sea lo que necesitas, para comparar podrías usar "awk" o algo así.
Diego Fernando
PUES: Otra opción es cargar todos los datos con LOAD en una tabla temporal, y luego hacer un INSERT desde ahí solo con las que necesitas.
Hola, gracias por responder pero en realidad no entiendo esto:
mkfifo /tmp/datos.p
$ chmod 666 /tmp/datos.p
$ grep "Maria" /tmp/origen.txt > /tmp/datos.p
$ mysql -e "LOAD DATA INFILE '/tmp/datos.p' INTO TABLE mitabla"
¿En dónde lo voy a escribir?
¿Qué lenguaje es ese?
¿Qué significa chmod 666?
¿Podrías ser más explícito?
Yo no creo que sea problema de ser explicito o no, lo que te he enviado son comandos típicos de Unix/Linux.
- Se escriben directamente en la linea de comandos (Shell).
- Si de lenguaje se trata, seria BASH, que es el Shell que vienen por defecto.
- Chmod es el comando que cambia los permisos de los archivos.
_ _ _
Diego Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas