PDA

Ver la Versión Completa : Problema con load data


albarchi
09-02-2005, 20:35:57
Hola

1º os cuento:

Cargo los datos de una tabla con la sentencia:
load data
infile 'datos.txt'
into table ciclista
fields terminated by ';'
(dorsal,nombre,edad,nomeq)
El contenido de datos.txt:
1;Miguel Induráin;32;Banesto
2;Pedro Delgado;35;Banesto
3;Alex Zulle;27;ONCE
4;Tony Rominger;30;Mapei-Clas
5;Gert-Jan Theunisse;32;TVM
Hasta aqui ningun problema, lo que pasa es que cuando hago una consulta tipo:
SELECT *
FROM `ciclista`
WHERE nomeq = 'Banesto';
Me tendria que aparecer los de Banesto, pero no me aparece ninguna tupla, solo NULL

Y si os fijais en la imagen de la tabla, la ultima columna tiene un simbolo raro al final (la ves), hay esta el error que cuando cargo la tabla me mete ese caracter que no se lo que es.

http://usuarios.lycos.es/albarchi/foros/imagen-bdd1.jpg

¿Alguien me puede explicar pq me mete ese caracter?
¿Que podria hacer para que no lo cargue?
Gracias de ante mano y Salu2

roman
09-02-2005, 20:44:39
Muy posiblemente el caracter que ves corresponde al retorno de carro. Según explica el manual de MySql, si el archivo de texto lo generas en un sistema Windows, debes especificarle a MySql que las líneas están terminadas por dos caracteres: \r\n (retorno de carro y línea nueva) ya que de lo contrario asume que- como en Unix -las líneas terminan con sólo \n y toma \r como parte del campo.

En tu consulta, después de FIELDS TERMINATED BY ';' pon

LINES TERMINATED BY '\r\n'

Para más detalles consulta el manual.

// Saludos

albarchi
09-02-2005, 21:01:37
Lo acabo de probar y tienes toda la razon, gracias de verdad.

Para ver si lo entiendo, lo que me has dixo que ponga:
LINES TERMINATED BY '\r\n'

Le dice al servidor que cada tupla acaba con retorno de carro , nueva linea.

Otras cosillas relacionadas:

La siguiente consulta:
load data
infile *
into table ciclista
fields terminated by ';'
(dorsal,nombre,edad,nomeq)
begindata
1;Miguel Induráin;32;Banesto
2;Pedro Delgado;35;Banesto
3;Alex Zulle;27;ONCE
4;Tony Rominger;30;Mapei-Clas
Que es exactamente igual que la anterior, solo que en este caso le indico los datos a introducir en la misma consulta en vez de darle el archivo.

Pues da error de sintaxis:
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 '* into table ciclista fields terminated by ';' (dorsal,nombre,e
Y no tengo ni idea de donde esta el error, es mas creo que no lo hay.
¿Sabeis pq me da el error?

Gracias y SAlu2

roman
09-02-2005, 21:07:48
No pues, en esto último me dejas frío. No tengo ni idea de que es eso de begindata ni había oído jamás hablar de ello ni lo encuentro en el manual y por si fuera poco ni siquiera me suena lógico: si no se usa un archivo ¿qué sentido tiene infile?

¿Estamos hablando de MySql?

// Saludos

albarchi
10-02-2005, 14:59:05
Hola (Perdona por tardar tanto en responderte)

Pues esta consulta funciona con Oracle 9 perfectamente. Pero como bien dices en el manual de MYSQL no aparece nada de begindata.
Supongo que con MySQL es imprescidible expecificar un archivo en infile.

¿Lo que no entiendo es eso, pq segun que motor de BDD funcionan unas consultas y otras no?

¿Que diferencias hay entre Oracle y MySQL?

¿El manual de MySQL hay alguna manera de conseguirlo en castellano?

Gracias y Salu2