Inserción masiva en Firebird, no aparecen todos mis registros
Buen día, tengo una tabla en mi base de datos en la cual almaceno todos los códigos postales que existen en México, son algo así de +95 mil.
A veces la autoridad competente actualiza los catálogos de códigos postales y por ende necesito actualizarlos en mi programa, pero mi problema es que se están eliminando los registros cuando realizo la inserción masiva, estos códigos postales el Servicio Postal Mexicano los publica en un Excel de dos hojas, entonces yo recorro toda la primera hoja y extraigo los valores, de la siguiente manera:
Pero en lugar de grabarme casi 95k de registros me muestra unos 50 mil :confused: ¿Alguien sabe que puedo revisar? Saludos. Edit: Hago un count(*) a mi tabla y si aparecen los 95k de registros, pero en el DBaver o en el SQL manager no aparecen |
Cita:
Supongo que al menos estarás haciendo un commit antes de cerrar, ¿no? |
Hago el count y si aparecen los 95 mil registros, pero cuando quiero visualizarlos no aparecen, solo aparecen como 50k
|
¡Ah!, eso será una limitación para no cargar tantos registros en memoria, supongo.
Porque si le das a "ir al último" estará, ¿no? |
Cita:
Esa tabla de 95k registros tiene como 17 campos, intente grabando solamente los "obligatorios para el funcionamiento del programa" que son como 4 (los demás son meramente informativos para el usuario), y de esta forma si aparecen todos los registros. :confused: |
Desde Delphi, después de terminar la inserción deberías hacer un SELECT y asegurar que el WHERE no esté filtrando por algo que te esconda registros.
Si haces "SELECT * FROM TABLA" y luego vas al último deberías verlos todos. Por otro lado revisa que no estés insertando registros duplicados. En España existe el caso de que varios pueblos pequeños que compartan un mismo código postal. También se da el caso inverso. Barcelona tiene muchos códigos postales. De todos modos, habría que ver el código completo para poder saber qué es lo que hay dentro de cada componente. Cuando se hacen Inserts Masivos, lo normal no es utilizar una tabla, sinó ejecutar un Query independiente ya que los DataSets pueden tener alguna cosa que no podemos controlar. Yo haría los inserts así:
|
La franja horaria es GMT +2. Ahora son las 03:32:58. |
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