FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Ingresar 2.789.636 registro en una tabla de forma eficiente
Hola:
Bueno , tengo el siguiente esquema. Uso como motoro de BD Interbase 7.5 y prog. en Delphi 2007. Uso como conector DbExpress, y comoponetes ClientDataSet. Aca en argentina, los contribuyente que son Inscripto en la DGI, en algunos casos deben retener un impuesto adicional puede ser percepcion o retencio. La cosa es que la Direccion de rentas saca en forma mensual un padron de todos los contribuyente empadronados , con las tasas que correspone al mes en curso. El archivo biene en TXT, separado por comas cuyas columnas son :Fecha, vigencia, cuit, tasa_percepcion,tasa_retencion,vencimiento y otro mas que no biene al caso. Bien yo lo lenanto despues de tener el archivo en la pc, con un ClientDataSet haciendo LoadFrom(). todo bien, y empiezo a procesarlo, llenando una y tabla con los mismo formatos de registro, (Fecha, vigencia, tasa,tasa..) amedida que voy leyendo disparo un sp en la base de datos y lo cargo. para saber como y por donde va hago una Application.processMesage, y voy mostradno en un label el numero de reg. pero mi inconveniente es que son 2.789.636 registros y tarda en cargar de 10horas y en lagunos casos 36 horas. la pregunat es, hay una forma mas eficiente de cargar tanta cantidad de reg en menos tiempo? Gracias Luis Roldan Mar del Plata Argentina |
#2
|
||||
|
||||
Hola,
lo primero que te diría es que me ha dado un poco de angustia leer tu petición por la forma en que te expresas y por las faltas de ortografía que tiene, tengo que ir descifrando lo que quieres decir, supongo que no seré el único al que le pase esto, lo segundo es que no das ninguna información de como lo estás haciendo, podrías poner algo de código, te podría decir que yo lo haría con una consulta insert pero a lo mejor ya lo estás haciendo. Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta. |
#3
|
|||
|
|||
Hola eldioni, gracias por tu tiempo, te pido disculpa, soy medio atolondrado para escribir. te paso el codigo.
con esto leo el txt:
y con este hago el proceso de carga
gracias Última edición por Chaja fecha: 03-04-2012 a las 17:49:09. |
#4
|
||||
|
||||
Pues sí, ha costado trabajo leerlo
Resumiendo, dices que lees un fichero de texto y que tarda 10 horas y otras veces 36 horas. ¿Y? Edito: se te ha enrevesado el código A ver si puedes arreglarlo, en caso contrario, envíalo a nuestro email y te lo copio y pego para que salga correctamente. |
#5
|
|||
|
|||
ahi corregi el codigo que no se veia...
|
#6
|
|||
|
|||
1) Para leer un fichero tan grande no uses el componente tmemo. Puedes usar:
Código:
var f : TextFile; lineaactual : string; begin AssignFile('c:\test.txt', f); try Append(f); while not Eof do begin Readln(f, lineaactual); //creo que es así, busca en la ayuda de Delphi para asegurarte //aqui haces lo que quieras con lineaactual end; finally Closefile(f); end; end; |
#7
|
||||
|
||||
Cita:
Además también quitaría el application.processmessages o que solamente lo hiciera cada ¿1000? registros.
Otra cosa, me ha parecido que lees a un clientdataset y luego sus valores lo pasas como parámetros a un stored procedure, ¿por qué no lo haces directamente? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ingresar registro en delphi php y Mysql | kurono | PHP | 1 | 06-06-2011 02:38:32 |
Alguna forma más eficiente de enviar HTML al navegador-cliente ??? | chalao | Internet | 8 | 16-10-2008 18:23:03 |
Forma eficiente de manejar arrays de 10'000.000 cuadrados | mamcx | OOP | 6 | 15-09-2006 21:01:12 |
¿Cómo Modificar un Registro de Tabla más Eficiente? | MartinC | MySQL | 1 | 16-03-2005 14:04:31 |
Dar un valor a un registro en una tabla de forma automática | vhirginia | Conexión con bases de datos | 3 | 26-04-2004 19:50:42 |
|