Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 25-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 25-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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...

EDITO: Veo que se me han adelantado...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 25-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
P.D: Lo de Firefox no me ha quedado claro...
A mi también lo de FireFox, no me ha quedado claro .

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 25-07-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
Unhappy 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
Responder Con Cita
  #6  
Antiguo 25-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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? ...¿?¿?¿
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 25-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 25-07-2008 a las 17:31:33.
Responder Con Cita
  #8  
Antiguo 25-07-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
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
Hola Caro,
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
__________________
Ya tengo Firma!
Responder Con Cita
  #9  
Antiguo 25-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, existe el bulk insert si estas usando SQL, aunque no lo he probado
Responder Con Cita
  #10  
Antiguo 25-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
Hola Caro,
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
Muchísimas gracias por responder Juanelo, FileStream creo que es de C++ Builder, en delphi sería TextFile, la verdad que si, de esa forma pude leer todo el archivo en ese entonces, aunque creo que el hecho de dividir en varios archivos y aplicar mi algoritmo por partes, podía haberlo hecho de otra forma, sin tener que dividir en varios archivos.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #11  
Antiguo 26-07-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
Muchísimas gracias por responder Juanelo, FileStream creo que es de C++ Builder, en delphi sería TextFile, la verdad que si, de esa forma pude leer todo el archivo en ese entonces, aunque creo que el hecho de dividir en varios archivos y aplicar mi algoritmo por partes, podía haberlo hecho de otra forma, sin tener que dividir en varios archivos.

Saluditos
Hola a todos,

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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 26-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
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.
Delphi 7 Marcelo, el rato que leí el mensaje de jueanelo, fui a la ayuda y puse FileStream y me salía que era una función de c++ Builder. Acabo de hacer mis pruebitas y si, ya no me sale el Out Memory, muchísimas gracias a los dos.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #13  
Antiguo 28-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Caro Ver Mensaje
...Neftali una pregunta, si fuera un archivo gigantesco que otras opciones tenemos a parte del StringList??
Bueno, veo que llego tarde,... muy tarde...
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #14  
Antiguo 12-08-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
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 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
Responder Con Cita
  #15  
Antiguo 12-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como importar informacion a mi base de datos desde un disket ibbeth Firebird e Interbase 13 20-01-2007 10:18:38
importar datos de excel a una base de paradox con delphi roraclau Tablas planas 4 11-01-2007 01:50:29
importar de excel a base de datos axel Varios 3 26-07-2006 09:47:49
importar base de datos con form jaerazo PHP 2 02-07-2006 01:27:09
Importar Base de Datos Firebird/Interbase a SQL Server altinoco21 MS SQL Server 1 06-04-2005 22:09:26


La franja horaria es GMT +2. Ahora son las 22:24:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi