FirebirdSQL logo
 DOMAININDEX 

Tables externes

La clause optionnelle EXTERNAL [FILE] indique que la table est stockée en dehors de la base de données dans un fichier texte externe.Les colonnes d’une table stockée dans un fichier externe peuvent être de n’importe quel type, à l’exception des BLOB et des tableaux avec n’importe quel type de données.

Seules les opérations d’ajout de nouvelles lignes (INSERT) et de sélection de données (SELECT) sont autorisées sur une table stockée dans un fichier externe.Les opérations de modification des données existantes (UPDATE) ou de suppression des lignes de cette table (DELETE) ne peuvent pas être effectuées.

Une table externe ne peut pas contenir de restrictions concernant les clés primaires, externes et uniques.Aucun index ne peut être créé pour les champs d’une telle table.

Le fichier de table externe doit être situé sur un périphérique de stockage physiquement situé sur le serveur hébergeant le SGBD.Si le [paramètre]``ExternalFileAccess'' du fichier de configuration firebird.conf contient `Restrict', le fichier de la table externe doit être situé dans l’un des répertoires spécifiés dans l’argument `Restrict'.Si Firebird ne trouve pas le fichier lors de l’accès à la table, il le créera lors du premier accès.

Important

La possibilité d’utiliser des fichiers externes pour les tables dépend de la valeur du ExternalFileAccess dans le fichier de configuration firebird.conf :

  • S’il est défini à None, tout accès au fichier externe est refusé.

  • La valeur Restrict est recommandée pour limiter l’accès aux fichiers externes aux répertoires créés spécifiquement à cet effet par l’administrateur du serveur. Par exemple :

    • ExternalFileAccess = Restrict externalfiles limitera l’accès au répertoire externalfiles du répertoire racine de Firebird.

    • ExternalFileAccess = Restrict d:\databases\outfiles ; e:\infiles limitera l’accès à deux répertoires Windows seulement. Notez que les chemins qui sont des mappings de chemins de réseau ne fonctionneront pas. Les chemins entre guillemets simples ou doubles ne fonctionnent pas non plus.

  • La valeur "Full" permet d’accéder aux fichiers externes n’importe où sur le système de fichiers de l’hôte. Cela crée une vulnérabilité et n’est pas recommandé.

Format de fichier externe

La table externe est au format rows' avec une longueur fixe.Il n’y a pas de séparateurs de champs : les limites des champs et des lignes sont définies par la taille maximale en octets de chaque définition de champ.Il faut en tenir compte tant lors de la définition de la structure d’une table externe que lors de la conception d’un fichier d’entrée pour une table externe dans laquelle des données d’une autre application doivent être importées.Par exemple, le format répandu ".csv'", ne peut pas être utilisé comme fichier d’entrée, et ne peut pas être reçu directement comme fichier externe.

Le type de données le plus utile pour les colonnes de tables externes est CHAR avec une longueur fixe. La longueur doit correspondre aux données que vous souhaitez manipuler.Les types numériques et les dates peuvent facilement être convertis en eux, et les lignes sont produites telles quelles, alors que si les données ne sont pas lues par une autre base de données Firebird, les types natifs peuvent être méconnaissables pour les applications externes et être "abracadabra" pour elles.

Bien sûr, il existe des moyens de manipuler les types de données pour créer des fichiers de sortie de Firebird qui peuvent être lus directement comme fichiers d’entrée dans d’autres applications, en utilisant des procédures stockées avec ou sans utilisation de tables externes.La description de ces méthodes dépasse le cadre de ce manuel.Nous ne donnerons ici que quelques directives et conseils pour créer et travailler avec des fichiers texte simples, car une table externe est souvent utilisée comme moyen simple de créer ou de lire un journal indépendant des transactions.Ces fichiers peuvent être lus hors ligne avec un éditeur de texte ou une application d’audit.