PDA

Ver la Versión Completa : Archivos TXT y MySQL


cmfab
04-02-2011, 14:15:19
Hola a todos hace pocos dias puse un hilo como este. se que se ha hablado mucho del tema. pero tengo una curiosidad (duda). necesito cargar un archivo txt separado por comas a una tabla de MySQL. sucede que en algunas busquedas sugeridas me encontré con la siguiente instruccion


<DIV class=frame_codigo_sql>Código SQL [-] (http://www.clubdelphi.com/foros/#)<DIV class=texto_codigo_sql id=sql_div_4d4bfbb11d209>

cmfab
04-02-2011, 14:17:09
Lo siento pongo el mensaje de nuevo. porque algo pasó que no salió correctamente.

Hola a todos hace pocos dias puse un hilo como este. se que se ha hablado mucho del tema. pero tengo una curiosidad (duda). necesito cargar un archivo txt separado por comas a una tabla de MySQL. sucede que en algunas busquedas sugeridas me encontré con la siguiente instruccion


load data infile "C:/CR/Archivo.txt"
into table tablatexto
fields terminated by ","


Lo que pasa es que funciona de maravillas con mi servidor MySQL version 5. sin embargo el cliente de mi aplicacion tiene instalada la version 5.1 de MySQL y le salta el siguiente error al ejecutar la consulta: Date Truncated From column: "Nombre campo". he de destatacar que la tabla para donde se envian los datos del archivo txt tiene la misma estructura en ambos servidores, pues es generada por la propia aplicacion, además el archivo TXT que se intenta cargar también es el mismo.

Gracias por sus atenciones

duilioisola
04-02-2011, 15:03:47
Te faltaría comprobar que la estructura de la tabla también sea la misma. (Campos y orden de los campos)
(No conozco MySQL, por lo que no se si es una tabla temporal o algo asi.)

Seguramente algún registro tiene una coma en medio. A mi me sucedió alguna vez...

Supón que el archivo es:
NUMERO, NOMBRE, IMPORTE
1, JUAN PEREZ, 100.12
2, ACME, S.A., 200.34
3, OTRA COSA, 1244.26

ACME, S.A. tiene un a coma en medio y trataría el valor "S.A." como importe...

La forma correcta de generar un archivo CSV es separar por comas los valores y si es un string, meterlo dentro de comillas dobles.
NUMERO, NOMBRE, IMPORTE
1, "JUAN PEREZ", 100.12
2, "ACME, S.A.", 200.34
3, "OTRA COSA", 1244.26

Date Truncated From column: "Nombre campo"
Supongo que la coma mal puesta hace que los campos se corrar una posicion y trate de meter [NOMBRE] donde debe ser [FECHA]

cmfab
04-02-2011, 15:48:58
Gracias por la respuesta
pero no es el caso. la estructura de las tablas es la misma. y el archivo txt tambien

En el servidor version 5 anda perfectamente. gracias una vez mas

cmfab
04-02-2011, 17:18:14
Hola de nuevo

los dos ultimos campos de la tabla son de tipo Double, donde se guardan dos importes. ahora cambiando en la version 5.1 de My SQL a Varchar estos campos veo que se incluye en el ultimo campo el caracter de ESC.

pense que se podria solucionar incluyendo la linea

LINES TERMINATED BY '\n'

pero sigue apareciendo. alguna idea ?

roman
04-02-2011, 17:28:31
he de destatacar que la tabla para donde se envian los datos del archivo txt tiene la misma estructura en ambos servidores


los dos ultimos campos de la tabla son de tipo Double, donde se guardan dos importes. ahora cambiando en la version 5.1 de My SQL a Varchar estos campos veo que se incluye en el ultimo campo el caracter de ESC.

Por fin, ¿tienen o no la misma estructura?

Sería bueno que aclararas esto y que especificaras más el formato en que generas los TXT, por ejemplo, ¿encierras los campos entre comillas?

// Saludos

cmfab
04-02-2011, 18:54:36
Gracias si si. tienen la misma estructura
los datos son por ejemplo

Juan, 1345.45, 123.78

La tabla tiene la misma estructura en ambos servidores

Nombre Varcar(30)
Importe1 Double
Importe2 Double.

En el servidor con mysql 5 funciona como un rayo (a la perfecccion)

En el servidor con MySQL 5.1 salta el error : DataTruncated For column: Importe2.

lo que explicaba es que pensaba por queé el ultimo campo si importe1 tiene la misma estructura ?.

Entonces lo que hice fue a modo de prueba cambiar la estructuta de los campos importes a strings (por ejemplo varchar(15) ) y allí funcionó la consulta pero veo que despues de los valores del campo importe2 pone el caracter ESC al final del numero (se ve como un cuadrito pequeño)

cmfab
04-02-2011, 19:20:14
Resuelto el problema

incluyendo la linea

LINES TERMINATED by "\r\n" ( antes las colocaba al revés). debio ser eso. pero todavia queda la incognita porque la instruccion sin esta linea funciona bien en el server con la version 5.

Saludos y Gracias a todos

duilioisola
04-02-2011, 19:33:12
pero todavia queda la incognita porque la instruccion sin esta linea funciona bien en el server con la version 5
Paga a Oracle unos cuantos miles y se lo podrás preguntar