Frequently asked questions - Base
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Comment lier (attacher) des tables au format texte dans une base HSQL ?
On dispose d'un fichier au format texte (.txt, .csv) que l'on souhaite lier à une base de données LibreOffice (format HSQL par défaut). Ce fichier peut être modifié hors de LibreOffice. Il peut s'agir par exemple d'un fichier généré par une application. On souhaite pouvoir, non pas l'importer dans une base (ce qui produirait un résultat non dynamique), mais le lier afin de refléter les changements apportés.
Le principe sera de créer une table au format Texte définissant la structure, puis d'établir la liaison avec le fichier source. L'interface ne permet pas d'exécuter "graphiquement" ce type de commande. Nous devons donc passer par la commande
▸ . Hormis cette contrainte, la table sera utilisable comme une autre table. Elle pourra notamment être utilisée dans des jointures avec des tables Hsql standards.Nous allons créer une table comprenant un champ identifiant de type (INTEGER) en auto-valeur, un champ texte (VARCHAR), un champ date (DATE) et un champ numérique (NUMERIC).
Le jeu de données correspondant sera :
1;Produit un;2008-07-01;23.10 2;Produit deux;2008-07-02;15.50 3;Produit trois;2008-07-03;11 4;Produit quatre;2008-07-04;13.50
Création de la table
- Ouvrir la base HSQL concernée
- Lancer la commande ▸
- Taper le SQL ci-dessous dans la zone Commande à exécuter puis cliquer sur Exécuter
-- Instructions a executer par Outils> SQL
CREATE TEXT TABLE "NomTableLiaison" ("ID" INTEGER GENERATED BY DEFAULT AS IDENTITY, "NomProduit" VARCHAR(50), "DateDebut" Date, "Nombre" NUMERIC)
SET TABLE "NomTableLiaison" SOURCE "test.csv;fs=\semi"
Nota
- Le fichier "test.csv" figure ici dans le même dossier que la base de données.
- La liste des tables n'est pas actualisée automatiquement : lancer la commande ▸ (commande active uniquement lorsque les objets "Tables" sont affichés).
Si l'on désire modifier quelque chose alors que la base est ouverte il est possible de déconnecter la table de son fichier source par la commande :
-- Instructions a executer par Outils> SQL
SET TABLE "NomTableLiaison" SOURCE OFF
La reconnexion se fera naturellement par la commande :
-- Instructions a executer par Outils> SQL
SET TABLE "NomTableLiaison" SOURCE ON
- Télécharger une base exemple (créer dans le même dossier que la base un fichier test.csv avec le jeu de données ci-dessus).