En este artículo habíamos visto como insertar datos que se encuentran en un archivo externo dentro de una tabla de Firebird:

https://firebird21.wordpress.com/2013/03/03/insertando-una-gran-cantidad-de-filas/

Ahora veremos el proceso inverso: crear un archivo externo e insertarle filas.

En realidad es muy sencillo.

CREATE TABLE MITABLAEXTERNA EXTERNAL 'E:\DATABASES\EXTERNA.TXT' (
   EXT_IDENTI SMALLINT,
   EXT_NOMBRE VARCHAR(40));

Como ves, al comando CREATE TABLA solamente se le agrega la palabra clave EXTERNAL y el nombre que queremos darle al archivo externo, rodeado con apóstrofos.

Para insertarle datos, se hace exactamente igual que con una tabla normal:

INSERT INTO MITABLAEXTERNA (EXT_IDENTI, EXT_NOMBRE) VALUES (1, 'MARCELA')
INSERT INTO MITABLAEXTERNA (EXT_IDENTI, EXT_NOMBRE) VALUES (2, 'SILVIA')

EXTERNAL1

Captura 1. Si haces clic en la imagen la verás más grande

Pero a una tabla externa no se le pueden actualizar filas ni tampoco borrar filas. Solamente se le pueden insertar filas.

Si ahora abrimos el archivo ‘EXTERNA.TXT’ con el bloc de notas, esto es lo que veremos:

EXTERNAL2

Captura 2. Si haces clic en la imagen la verás más grande

Los nombres se ven bien, pero los números no. ¿Por qué? ¿qué pasó?

Es que los números se guardan con su representación binaria, no como su representación de texto. En otras palabras, todos los números serán ilegibles para la gran mayoría de los seres humanos. ¿Y cuál es la solución? Muy fácil, que todas las columnas sean de tipo CHAR, así siempre podremos visualizarlas correctamente:

CREATE TABLE MITABLAEXTERNA2 EXTERNAL 'E:\DATABASES\EXTERNA2.TXT' (
   EXT_IDENTI CHAR(5),
   EXT_NOMBRE CHAR(40));

Y como ahora todas las columnas son de tipo CHAR entonces podemos rodear a las constantes con apóstrofos si queremos (pero no es obligatorio con las constantes numéricas):

INSERT INTO MITABLAEXTERNA (EXT_IDENTI, EXT_NOMBRE) VALUES ('1', 'MARCELA')
INSERT INTO MITABLAEXTERNA (EXT_IDENTI, EXT_NOMBRE) VALUES ('2', 'SILVIA')

Y si ahora abrimos el archivo ‘EXTERNA2.TXT’ con el bloc de notas, esto es lo que veremos:

EXTERNAL3

Captura 3. Si haces clic en la imagen la verás más grande

¡¡¡PERFECTO!!! ya vemos los identificadores y los nombres de las personas. Que es exactamente lo que deseábamos.

Si los datos que queremos insertar se encuentran en alguna tabla de Firebird (que es el caso más común) entonces para insertarlos podemos utilizar una subconsulta:

INSERT INTO MITABLAEXTERNA2
   (EXT_IDENTI, EXT_NOMBRE)
SELECT
   CLI_IDENTI,
   CLI_NOMBRE
FROM
   CLIENTES

EXTERNAL4

Captura 4. Si haces clic en la imagen la verás más grande

A las dos filas que ya teníamos anteriormente en nuestra tabla externa ahora se le agregaron los datos de los clientes. Usar SELECT para insertar datos a las tablas es lo más rápido que existe.

IMPORTANTE:

Un archivo externo no puede tener Primary Key, ni Foreign Key, ni cualquier clase de índices. ¿Por qué no? porque no tiene sentido, ya que puede ser abierto por cualquier programa (como el Bloc de notas del Windows, por ejemplo) y por lo tanto está afuera del control del Firebird. Las restricciones y los índices solamente tienen sentido si están bajo el control del Firebird.

Tampoco se justifica especificar que una columna será NOT NULL porque en un archivo externo todas las columnas siempre son NOT NULL, así que declarar a una columna como NOT NULL es innecesario.

Conclusión:

Tener la posibilidad de exportar datos en archivos externos puede ser muy importante en algunas ocasiones, con Firebird es muy fácil hacerlo, solamente debemos recordar que a esos archivos solamente se le pueden insertar datos, no se puede modificar esos datos ni borrarlos. Y también hay que recordar que los archivos externos no pueden tener restricciones ni índices porque como son externos entonces pueden ser abiertos por otros programas y en ese caso se encontrarían afuera del control del Firebird.

Artículos relacionados:

Insertando una gran cantidad de filas

El índice del blog Firebird21