Forum Linux.général LibreOffice Base connexion externe HSQLDB, comment en faire un modèle à partager ?

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
4
5
mai
2023

Salut tout le monde,

Je zesplique : cela fait un bout de temps que je pense à verser ma base de données clients (sa structure, pas les données évidemment) sur le site des extensions de LibreOffice. On vient d’ailleurs de me demander si je voulais la partager (la structure toujours, pas les données).

Cette base a une connexion externe HSQLDB. Ce qui fait que, si je la mets telle quelle (sans les données évidemment), ailleurs. Elle perd la connexion, donc les tables et les requêtes au passage. Elle n’a, en conséquence, strictement plus aucun intérêt.

Avez-vous une idée de comment je pourrais faire ?

J’ai essayé d’envoyer ce message sur la liste user de LibreOffice, à laquelle je suis inscrite, mais :

le serveur destinataire n’a pas été en mesure de traiter le message.

Bref aucun risque que ça arrive. Donc je me tourne vers vous. En plus, ce genre de chose n’est pas traité dans le bouquin que j’ai sur Base. Ce monde est mal fait.

Merci d’avance, bonne fin de semaine et bon couronnement si c’est le genre de chose qui vous botte.

  • # listes users de LibreOffice

    Posté par  . Évalué à 5.

    Bonjour Ysabeau,

    J’ai essayé d’envoyer ce message sur la liste user de LibreOffice, à laquelle je suis inscrite, mais :

    le serveur destinataire n’a pas été en mesure de traiter le message.

    Tu devrais essayer à nouveau, les listes users, tant globale que francophone fonctionnent. Il semble qu'elles ont eu quelques vapeurs il y a quelques jours. J'ai reçu 40 messages d'un coup sur la liste users globale il y a quelques jours après plusieurs jours de silence.

    • [^] # Re: listes users de LibreOffice

      Posté par  (site web personnel, Mastodon) . Évalué à 6.

      J'ai recommencé. Rebelote ! Et comme ce n'est pas la première fois que mes messages n'arrivent pas. Je commence à en avoir ma claque. C'est, d'ailleurs, la raison pour laquelle je ne suis plus présente sur cette liste étant donné que mes messages se font jeter comme des malpropres.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

  • # petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

    Posté par  . Évalué à 3.

    Que signifie ceci ?

    Cette base a une connexion externe HSQLDB. Ce qui fait que, si je la mets telle quelle (sans les données évidemment), ailleurs. Elle perd la connexion, donc les tables et les requêtes au passage. Elle n’a, en conséquence, strictement plus aucun intérêt.

    • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

      Posté par  (site web personnel, Mastodon) . Évalué à 6.

      Le module Base dans LibreOffice et OpenOffice peut servir de frontal pour bases de données. On peut soit utiliser une « connexion intégrée », ce qui est le cas par défaut. Longtemps ça a été HSQLDB, depuis, hum, quelque chose comme les versions 6, la connexion intégrée par défaut est Firebird.

      Dans ce cas, la base de données n’est accessible que d’un seul ordinateur.

      Tu peux aussi utiliser un moteur de base de données externe. Dans ce cas, Base sert d’interface. Outre le fait que la base de données peut ainsi être sur un serveur et utilisée par plus d’une machine, c’est aussi plus sur.

      Donc ma base de données, créée avec Base (parce que c’est tout de même très simple) est connectée à HSQLDB externe qui sert de moteur de base de données. Quand j’utilise l’appli de LibreOffice, elle va chercher les données dans HSQLDB en dehors de LibreOffice. En gros pour la configuration, en l’espèce tu dois configurer un connecteur (JDBC dans le cas de figure) et lui indiquer la source de données.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

        Posté par  . Évalué à 4.

        Ok, ça répond en partie à les interrogations. Par contre ce que je ne comprends pas c'est le problème avec la connection: n'est-il pas possible de faire un export, import dans une nouvelle base et ensuite configurer libreoffice pour qu'il se connecte à cette base ? ( Desole il y a un truc qui me manque). Ça m'intéresse parce que initialement j'aurais eu un truc similaire à faire l'an dernier … Finalement il n'y a pas eu besoin, mais j'aimerais en savoir plus.

        • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

          Posté par  (site web personnel, Mastodon) . Évalué à 4.

          Il y a aussi un truc qui me manque dans ton commentaire. C'est ceci :

          n'est-il pas possible de faire un export, import dans une nouvelle base

          Pour moi ces histoires d'import et d'export, ça ne concerne que les données. Ou j'ai loupé un truc ?

          Cela dit, tu ne peux pas exporter une base de données .odb (pas en passant par LibreOffice en tout cas). C'est une grande limite de Base. Tu peux faire des rapports, copier-coller les tables dans Calc. Mais pas exporter la base de données. De la même façon, les données ne sont pas "importées" mais copiées-collées dedans. Cela dit, il y a peut-être moyen de faire quelque chose en utilisant le copier-coller.

          « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

          • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

            Posté par  . Évalué à 2.

            Pour moi ces histoires d'import et d'export, ça ne concerne que les données. Ou j'ai loupé un truc ?

            Ca dépend … je parle d'export/import mais j'aurais pu parler aussi de sauvegarde/restauration. Sur certains SGBD on peut faire un export et import de la structure de la base sans les données ( exemple avec postgreSQL) Et au pire, j'avais à l'esprit de faire une sauvegarde/restitution de la base complète, pour supprimer les données de la copie et ne garder que la structure pour modèle.

            Comme ta base est une base externe, il y a peut-être moyen de faire quelque chose en attaquant directement la base via requêtes SQL sans passer par LibreOffice pour faire une copie de la base et vider les données.

            J'ai cherché un peu sur la doc de HSQLDB s'il y avait moyen de faire ça mais je n'ai pas encore trouvé. Je ne sais pas si c'est possible.

          • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

            Posté par  . Évalué à 3.

            si ta base de données est externe à libreoffice, il faut la fournir via un moyen externe

            donc le dump avec juste la structure doit permettre à quelqu'un qui reprend ton systeme d'avoir l'interface dans libreoffice, et de reimporter la structure dans son moteur de base de donnée

            au pire tu dumpes ta base dans une autre base "template"
            et tu purge les tables des données qu'elles contiennent

      • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

        Posté par  (site web personnel) . Évalué à 2.

        Longtemps ça a été HSQLDB, depuis, hum, quelque chose comme les versions 6, la connexion intégrée par défaut est Firebird

        C'est étonnant, avec LibreOffice 7.5 sous Ubuntu, c'est bien une base intégrée HSQLDB qui m'est proposée par défaut lorsque je crée un nouveau document Base. (Et je ne vois pas d'option pour remplacer cette base intégrée par Firebird).

        • [^] # Re: petite précision pour quelqu'un que le sujet intéresse (mais qui n'a pas forcément de réponse)

          Posté par  (site web personnel, Mastodon) . Évalué à 4.

          La version LibreOffice d’Ubuntu, pour autant que je sache est assez « bricolée » et donc pas exactement identique à la version de TheDocumentFoundation (TDF). Cela dit, quand on crée une nouvelle base, on a une boite « Sélectionner une base de données » qui propose, notamment, « Base de données intégrée » et il y a un menu déroulant qui propose donc, par défaut, Firebird intégrée, ou HSQLSB intégré. Il est possible que la version Ubuntu shunte cela. Entre nous, Firebord me semble poser plus de problèmes qu’il n’en résout. Sous Linux tout au moins.

          La décision a été prise de passer à Firebird en particulier parce qu’une connexion HSQLDB nécessite Java, ce qui ne pose pas de problème particulier pour Linux mais en posait de nombreux à Windows. L’idée, si je ne m’abuse, a été a un moment donné de se débarrasser de Java.

          « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

  • # fichier script

    Posté par  (site web personnel) . Évalué à 4. Dernière modification le 07 mai 2023 à 09:33.

    Normalement, je crois qu'une base hsqldb est constituée de plusieurs fichiers, dont l'un comporte le suffixe script. Et ce fichier comporte les instructions nécessaires à la création de la structure de la base. Le contenu ressemble à cela :

    SET DATABASE COLLATION "French"
    CREATE SCHEMA PUBLIC AUTHORIZATION DBA
    CREATE CACHED TABLE "personnes"("id" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,"nom" VARCHAR(100) NOT NULL)
    ALTER TABLE "personnes" ALTER COLUMN "id" RESTART WITH 0
    CREATE USER SA PASSWORD ""
    GRANT DBA TO SA

    Pour se connecter à un fichier hsqldb externe sans LibreOffice, une solution est d'utiliser les outils java fournis par hsqldb :

    $ java -cp '/home/manu/test_base/hsqldb-2.7.1/hsqldb/lib/hsqldb.jar' org.hsqldb.util.DatabaseManagerSwing

    qui lance une interface graphique permettant de se connecter à une base hsqldb.

    C'est peut-être une piste de partager également ce fichier avec le fichier Base ?

    (Pour info, si vous dézippez un fichier Base intégré, vous trouverez un répertoire database qui contient un fichier script de ce type).

    Sinon, il est peut-être possible de créer une base intégrée reproduisant les caractéristiques de structure, tables, relations voulues et de supprimer toutes les données ?

    • [^] # Re: fichier script

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Merci.

      En fait je ne veux pas recréer une base de données, notamment à cause des formulaires. C'est pas mal de boulot. Mais, je viens de voir qu'on peut copier-coller les formulaires d'une base à une autre.

      La solution serait donc un compromis : refaire les tables, en utilisant l'assistant de Base, ce qui permet de gagner du temps et de copier-coller les formulaires de ma base.

      Reste plus qu'à trouver comment avoir des numéros qui s'incrémentent automatiquement dans Firebird (ou à rester sur HSQLDB et basta).

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: fichier script

        Posté par  . Évalué à 2.

        C'est plus ou moins l'idée que j'avais en tête quand j'ai posé mes questions (voir mon commentaire plus haut).

        • [^] # Re: fichier script

          Posté par  (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 07 mai 2023 à 19:35.

          Alors, tu peux aussi copier les tables, l'une après l'autre et, évidemment, indiquer si tu veux tout (définitions et données) ou seulement les données.

          De toute façon, il faut je fasse un tutoriel pour cette histoire de base de données. Autant que j'en fasse aussi là-dessus.

          J'aurais dû essayer le copier-coller plus tôt. Je ne vous aurais pas embêtés (mais il est peut-être trop tôt pour crier victoire).

          Mais je la fais avec une connexion HSQLDB intégrée. Les gens qui la voudront sous Firebird n'auront qu'à utiliser l'outil de migration de LibreOffice.

          « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.