Archivos FPT y DBT: dónde vive de verdad el texto largo de un DBF
Si junto a su tabla hay un archivo con el mismo nombre y la extensión .fpt o .dbt, no es basura ni una copia de seguridad. Es la otra mitad de la tabla y sin él parte de los datos no existe.
Por qué un archivo aparte
Cada registro de un DBF tiene la misma longitud, y eso es lo que hace rápido el formato. Pero el texto largo no cabe en ese esquema: no se puede declarar un campo «observaciones» de 5.000 bytes cuando el 99 % de los registros no tienen ninguna.
La solución es sencilla: la tabla guarda no el texto, sino un número de bloque de un archivo aparte. El campo ocupa 4 o 10 bytes y el texto, de cualquier longitud, vive junto a la tabla.
Tres formatos memo
| Archivo | Lo escribe | Cómo está organizado |
|---|---|---|
.DBT (dBase III) | dBase III+, Clipper antiguo | bloques de 512 bytes; el texto termina con el par 0x1A 0x1A |
.DBT (dBase IV) | dBase IV y 5 | cada bloque empieza con la firma FF FF 08 00 y después una longitud |
.FPT | FoxPro 2.x, Visual FoxPro | tamaño de bloque en el encabezado; cada bloque tiene un tipo y una longitud |
.SMT | Clipper SIX | un encabezado de bloque de ocho bytes |
La referencia guardada en la tabla también difiere: Visual FoxPro escribe el número de bloque como cuatro bytes binarios, mientras que FoxPro 2.x y dBase usan diez caracteres de dígitos. No se pueden confundir: el mismo campo se leería como texto o como basura.
Por qué el texto sale en blanco
Tres causas habituales, por orden de frecuencia:
- Falta el archivo memo. Solo se copió el .dbf y el texto se quedó atrás. La solución es mover los dos archivos. En Tabulens, arrástrelos a la vez o abra la carpeta entera.
- El programa no sabe leer esa variante de memo. Los visores generales suelen admitir solo el .DBT de dBase III y muestran un número de bloque en lugar del texto.
- El archivo memo está truncado o dañado. Pasa cuando se copian los archivos mientras funciona el programa que los usa. Unos registros se leen y otros no.
Cómo saber si una tabla tiene memo
Hay dos señales. La primera es el tipo de campo en la estructura de la tabla: M (memo), G (general), P (imagen) o W (blob). La segunda es una marca del encabezado del archivo.
El byte de versión también sugiere memo, pero engaña: Visual FoxPro escribe la versión 0x30 tanto en tablas con memo como sin él. Fíese de los campos memo reales y no de la versión; si no, seguirá buscando un .fpt que nunca existió.
Qué hacer con él
Si necesita el texto en otro sitio, exporte la tabla a un formato en el que el texto largo sea un valor normal: XLSX, CSV o JSON. Al exportar de vuelta a DBF el memo se crea de nuevo y los archivos .dbf y .fpt deben conservarse juntos, por lo que el par se empaqueta en un único archivo comprimido.
Preguntas frecuentes
¿Puedo abrir un archivo .fpt solo?
Tiene poco sentido: un .fpt contiene trozos de texto sin vínculo con los registros. El vínculo está guardado en la propia tabla.
¿Por qué el archivo memo es mayor que la tabla?
Es normal. Los bloques se asignan en múltiplos del tamaño de bloque y el texto eliminado se queda físicamente en el archivo hasta que se reconstruye el memo.
¿Tienen algo que ver los índices (.cdx) con los archivos memo?
No. Un .cdx es un índice para búsquedas y ordenaciones rápidas; los archivos memo llevan texto. Una tabla puede tener uno, otro, los dos o ninguno.
Gratis para usar. Su archivo no se sube a ningún servidor. Versión para Windows — 4.6 MB, sin instalación: detalles. Pro — 29 USD una sola vez: precio.