Faq/Base/143/fr

From The Document Foundation Wiki
< Faq‎ | Base‎ | 143
Jump to: navigation, search

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 Outils ▸ SQL. 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 Outils ▸ SQL
  • 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 Affichage ▸ Actualiser les tables (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