![]() |
Como importar un txt a base de datos
Hola tengo un archivo txt donde los campos se encuentran separados por | quisiera saber cómo puedo impotar los datos del archivo en una tabla que puede ser en firefox, mysql o access
Puedo utilizar cualquier forma, la necesida es solo transformar el txt en una tabla Saludos Velia |
Hola velia, puedes utilizar un StringList para obtener todo el archivo, en cada posición se te cargara cada linea del archivo y otro StringList para que te separe cada linea en cuanto encuentre |, aquí cada posición sera el dato del campo, en este hilo mensaje #3 hay un ejemplo http://www.clubdelphi.com/foros/showthread.php?t=54934 donde tu delimitador no sería el ' ' sino |, teniendo los datos en el ultimo StringList solo sería insertar a la tabla en cuestión.
Saluditos |
Deberías concretar más exactamente en qué necesitas ayuda. Idea general, componentes a utilizar, pasos necesarios,...
Yo así a nivel general te diría: (1) Carga el fichero TXT en un StringList (si no es extremadamente gigantesco) (2) Recorre las líneas 1 a 1. (3) Parsea la cadena para obtener los datos de los campos. (4) Ves realizando INSERTs sobre la tabla. Intentalo o concreta un poco más tu pregunta. P.D: Lo de Firefox no me ha quedado claro...:o:o:o EDITO: Veo que se me han adelantado... |
Cita:
Saluditos |
gracias
Primero perdon por lo de firefox, se me chispoteó quise decir firebird :(
Segundo el archivo txt es gigantesco trata con el un padrón de 70.000 usuarios es decir 70000 registros tendría algun problema ??? Tercero el único requisito es pasar ese archivo a una tabla pero no tengo restricciones. Gracias por la ayuda sigo aceptando sugerencias |
No considero eso gigantesco.
He realizado una prueba en mi ordenador y un archivo de texto de unos 3GB, con 98.000 líneaqs de texto se carga en apenas 2 o 3 segundos en un TStringList. Hacer un recorrido de todas las líneas mostrando información en pantalla (que es lento) se debe ir a un poco más de un minuto. Lo que más te tardará será la inserción en la Base de Datos. ¿Es un proceso que tienes que hacer una vez? ¿Varias veces? ¿Es importante la velocodad? ...¿?¿?¿ |
Como te dice Neftali no tendras problemas con esa cantidad.
Neftali una pregunta, si fuera un archivo gigantesco que otras opciones tenemos a parte del StringList??. Yo tenía que trabajar sobre un archivo grande del cual tenía que hacer algunas operaciones y no lo pude cargar a un StringList, me salia Out Memory y ahí quedaba todo, por lo que se me ha ocurrido dividir el archivo en varios según a la cantidad de líneas que yo le indique en mi programa, una vez teniendo mi archivo en varios, hice mis operaciones, de esa forma pude hacer lo que tenía que hacer, por eso mi pregunta que otras posibilidades tenemos para trabajar con un archivo gigante. Saluditos |
Cita:
Aunque no soy Neftali te doy una sugerencia, porque no lo lees atravez de un FileStream, puedes ir recorriendo el archivo y al mismo tiempo analizar si llega un '\n' o salto de línea para indentificar cuando has llegado al final de una linea. Asi, en teoría ya no tendrías limite en el tamaño del archivo, aunque proablemente el proceso se haga mas lento, ya que ahora serían lectuas en el disco duro. Saludos |
Hola, existe el bulk insert si estas usando SQL, aunque no lo he probado
|
Cita:
Saluditos |
Cita:
Linett, ¿Qué versión de Delphi tienes? Al menos en la 6 está la clase TFileStream, y de la cual surgen las clases TStringTream, TMemoryStream, entre otras. Estas tres clases están en la unidad Classes. Saludos, |
Cita:
Saluditos |
Cita:
La idea es cambiar el modo de lectura; Cargar todo en un StringList, te permite trabajar con todo el archivo en memoria; Cómodo y rápido. La desventaja es que para archivos muy grandes no sirve. En ese caso el sistema de lectura debe ser diferente. Me alegro de que ya lo hayas solucionado. |
Muchas gracias!!!!!
Antes que todo quiero agradecer y pedir disculpas por recién responder un hilo que empecé pero la verdad es que no pude probar las soluciones antes.
Primero quiero comentar que hasta el momento probé una sola solución la de Caro Así que MUCHAS GRACIAS:D me sirvió muchisimo Segundo quiero preguntar a qué se considera un archivo gigantesco porque tengo que procesar 180.000 líneas y no sé que me conviene si usar la última solución que aconsejó Delphius la del TFileStream por la negativa de la velosidad. Gracias a por todo a Todos pero aunque llegué tarde..... muy tarde ... no está de más agradecer:o |
Hola, tambien se puede cargar directamente a la base de datos mediante un schema.ini, si estas usando ADO. hace poco hubo un mensaje por aqui que comentaba mas o menos lo mismo.
|
La franja horaria es GMT +2. Ahora son las 23:20:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi