7
juin
2023
Comment lier LibreOffice Base à MySQL
15:45

Comment lier LibreOffice Base à MySQL

7 juin 2023 15:45

Dans cet article, j'explique comment transférer des informations de MySQL vers Libreoffice Base sous Linux.

Préface

LibreOffice est inclus dans de nombreuses distributions Linux, sinon toutes. En outre, il peut être installé à partir du référentiel et télécharger sous forme de fichier DEB ou RPM.

Présentation

Au travail, environ une fois par mois, je vérifiais le fichier Excel source avec la base de données MySQL. La communication avec MySQL a été implémentée à l'aide de LibreOffice Base et du connecteur ODBC.

LibreOffice Base est un analogue du programme MS Access.
La base de données est enregistrée dans le système d'exploitation Linux sous un nom unique, accessible depuis LibreOffice Calc, Writer et LibreOffice Basic.

Entre le SGBD MySQL et LibreOffice Base, j'ai utilisé le connecteur ODBC. Plus tard, j'ai réussi à utiliser la connexion via JDBC.

Schéma de connexion du programme

shema

SGBD MySql <-> connecteur mysql ODBC/JDBC <-> LibreOffice Base <-> Libreoffice Calc

0. Installation de MySQL et LibreOffice

L'installation de MySQL a été discutée dans le précédent article sur MySQL.
Comment installer le package LibreOffice sur Linux - voir.article wiki.

1. Base de données

Les bases de données, comme chacun le sait, sont conçues pour stocker des informations. En règle générale, il s'agit d'un ensemble de tables interconnectées (base de données relationnelle). Dans les bases de données simples, l'une des tables est nécessairement la table principale (par exemple, un journal des transactions ou des marchandises dans un entrepôt) - les autres ne sont que des ouvrages de référence. Dans mon cas, j'ai utilisé une table principale « offres », à partir de laquelle j'ai fait une sélection à l'aide de requêtes.

À des fins de test, je vais montrer avec un exemple plutôt qu'une vraie base de données. La composition des champs est simplifiée à titre d'exemple.

Tableau offres

  • OFFER_ID - entier (champ clé unique)
  • NAME - nom
  • DESCRIPTION - description
  • PRICE - prix
  • DISPLAY - signe (0 ou -1 - ne pas afficher (entrée cachée / vendu), 1 ou 2 - affichage (en solde / promotion)

CREATE DATABASE primer;

USE primer;

DROP TABLE IF EXISTS offers;
CREATE TABLE offers (
offer_id int(11) NOT NULL AUTO_INCREMENT,
name varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL,
description varchar(4096) COLLATE utf8_unicode_ci DEFAULT NULL,
price int(11) DEFAULT NULL,
display int(11) DEFAULT '1',
PRIMARY KEY (offer_id)
) ENGINE=InnoDB AUTO_INCREMENT=546 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO offers VALUES (1,'AAAA', '', 10000, 1),(2,'BBBB', '', 80, 1),(3,'CCCCC', '', 555, 0),(4,'DD', '', 7, 1);

fichier de vidage de base de données amorce pour MYSQL :
primer.sql.zip

Pour créer une base de données, exécutez ce script en tant qu'utilisateur de la base de données racine:

mysql -u user -p
source primer.sql

2. Façons de se connecter à MySQL

Toutes les méthodes programmatiques de connexion à MySQL sont répertoriées sur la page https://www.mysql.com/products/connector/- il existe des drivers propriétaires ADO.NET, JDBC, ODBC, Python et ceux développés par la communauté PHP Drivers for MySQL, etc.

J'ai vérifié la méthode de connexion à MySQL - ODBC ou JDBC.
J'ai donné la préférence à ODBC, car je l'utilise depuis longtemps.

Mais vous pouvez l'installer de l'une des manières suivantes :

  • Connecteur ODBC pour MySQL - voir paragraphe 2.1
  • Connecteur JDBC pour MySQL - voir paragraphe 2.2

2.1 Installation du connecteur ODBC pour MySQL

Découvrez le numéro de version du système d'exploitation :

lsb_release -a

Téléchargez la distribution du connecteur ODBC pour votre version d'Ubuntu ou Debian.
Pour cela, rendez-vous sur la page suivante :
https://dev.mysql.com/downloads/connector/odbc/
Où téléchargeons-nous la distribution du connecteur ODBC pour MySQL pour notre système d'exploitation :

Si la distribution est Linux Mint, renseignez-vous sur la base du package.demande dans un moteur de recherche.
Par exemple, pour Limux Mint 21.1, la base de code Ubuntu est 22.04.

Autrement dit, pour Linux Mint 21.x, vous devez télécharger Ubuntu Linux 22.04 (x86, 64 bits), package DEB(mysql-connector-odbc_8.2.0-1ubuntu22.04_amd64.deb) sans symboles de débogage (dbg) d'une taille de 1,9 Mo. Sur la page suivante, cliquez sur "Non merci, lancez simplement mon téléchargement".

Installez le package de connecteur ODBC téléchargé (fichier DEB) en double-cliquant sur les dépendances (3 pièces).

Exécutez le fichier exécutable depuis le terminal myodbc-installer- il affichera une aide sur l'utilisation du connecteur depuis la ligne de commande :

myodbc-installer

Lors de l'appel de myodbc-installer sans paramètres, l'aide du programme s'affichera.

[ERROR] Not enough arguments given
+---                                                                   
 myodbc-installer v8.02.0000                                 
+---                                                                   

 Description                                                          

    This program is for managing MySQL Connector/ODBC configuration   
    options at the command prompt. It can be used to register or      
    unregister an ODBC driver, and to create, edit, or remove DSN.    

    The program has been designed to work across all platforms        
    supported by Connector/ODBC, including MS Windows and             
    various Unix-like systems.                                        

    The program requires that unixODBC version 2.2.14 or newer        
    has already been installed on the system.                         
    UnixODBC can be downloaded from here:                             
    http://www.unixodbc.org/                                          

 Syntax                                                               

    myodbc-installer   [Options]                      

 Object                                                               

     -d driver                                                        
     -s datasource                                                    

 Action                                                               

     -l list                                                          
     -a add (add/update for data source)                              
     -r remove                                                        
     -h display this help page and exit                               

 Options                                                              

     -n                                                         
     -t                                             
        if used for handling data source names the  
        can contain ODBC options for establishing connections to MySQL
        Server. The full list of ODBC options can be obtained from    
        http://dev.mysql.com/doc/connector-odbc/en/                   
     -c0 add as both a user and a system data source                  
     -c1 add as a user data source                                    
     -c2 add as a system data source (default)                        

 Examples                                                             

    List drivers                                                      
    shell> myodbc-installer -d -l                                     

    Register a Unicode driver (UNIX example)                          
    shell> myodbc-installer -d -a -n "MySQL ODBC 8.2 Unicode Driver" \ 
              -t "DRIVER=/path/to/driver/libmyodbc8w.so;SETUP=/path/to/gui/myodbc8S.so"

      Note                                                            
         * The /path/to/driver is /usr/lib for 32-bit systems and     
           some 64-bit systems, and /usr/lib64 for most 64-bit systems

         * driver_name is libmyodbc8a.so for the ANSI version and     
           libmyodbc8w.so for the Unicode version of MySQL ODBC Driver

         * The SETUP parameter is optional; it provides location of   
           the GUI module (libmyodbc8S.so) for DSN setup, which       
           is not supported on Solaris and Mac OSX systems            

    Add a new system data source name for Unicode driver              
    shell> myodbc-installer -s -a -c2 -n "test" \                  
              -t "DRIVER=MySQL ODBC 8.2 Unicode Driver;SERVER=localhost;DATABASE=test;UID=myid;PWD=mypwd"

    List data source name attributes for 'test'                       
    shell> myodbc-installer -s -l -c2 -n "test"                    
+---  

Veuillez noter que la version 8.0.2 du connecteur ODBC correspond à la version du serveur mysql - 8.0.35.

Notre objectif est de créer une source de données DSN !

Les paramètres DSN pour ODBC sont stockés dans un fichier de configuration texte /etc/odbc.ini

Tout d'abord, vérifions les pilotes ODBC installés :

myodbc-installer -d -l

Résultat :
MySQL
Pilote Unicode MySQL ODBC 8.2
Pilote ANSI MySQL ODBC 8.2

Ajout d'une nouvelle source DSN de données ODBC système nommée "primer"
connecté à la base de données mysql "primer" (exécutez avec sudo !).
Veuillez faire attention aux paramètres de connexion transmis dans le commutateur -t :

Commande brève- après cela, vous devrez éditer /etc/odbc.ini :

sudo myodbc-installer -s -a -c2 -n "primer" -t "DRIVER=MySQL ODBC 8.2 Unicode Driver;SERVER=localhost;DATABASE=primer;Socket=/var/run/mysqld/mysqld.sock" 

Équipe complète(recommandé) - après avoir modifié le fichier /etc/odbc.ini pas besoin.

 sudo myodbc-installer -s -a -c2 -n "primer" -t "DRIVER=MySQL ODBC 8.2 Unicode Driver;SERVER=localhost;DATABASE=primer;UID=root;PWD=11111;Port=3306;Socket=/var/run/mysqld/mysqld.sock" 

Si vous devez supprimer la source de données erronée, la commande est : sudo /myodbc-installer -s -r -n primer_err

où -c2 signifie la source de données système (pas l'utilisateur). Database=primer - nom de la base de données dans MYSQL

Vérification de la création de la source de données (sortie de liste)

myodbc-installer -s -l

Résultat :
primer - Pilote Unicode MySQL ODBC 8.2

Source de données dans le connecteur ODBC avec succès créé. La source de données ODBC est désormais disponible dans le système d'exploitation de ce PC.

Modification de /etc/odbc.ini

Si vous ne définissez pas le paramètre Socket=/var/run/mysqld/mysqld.sock, une erreur sera générée lors de la connexion au connecteur de base de données
[MySQL][Pilote ODBC 5.3(a)]Impossible de se connecter au réseau local
Serveur MySQL via le socket '/tmp
mysql.sock' (2)./connectivity/source/drivers/odbc/
OTools.cxx:357

Corrigez odbc.ini en ajoutant les lignes manquantes.
Un exemple de fichier correct avec DSN pour la source "primer":

odbc.ini ne contient aucun mot de passe

[primer]
DRIVER=MySQL ODBC 8.2 Unicode Driver
DATABASE=realty
NO_SCHEMA=1
PORT=3306
PWD=55555
SERVER=localhost
SOCKET=/var/run/mysqld/mysqld.sock
UID=root

odbc.ini avec mot de passe en texte clair

[primer]
DRIVER=MySQL ODBC 8.2 Unicode Driver
DATABASE=realty
NO_SCHEMA=1
PORT=3306
PWD=55555
SERVER=localhost
SOCKET=/var/run/mysqld/mysqld.sock
UID=root
PWD=11111

La différence entre les deux options, comme vous pouvez le deviner, est que « avec mot de passe », vous n'avez pas besoin de saisir un nom d'utilisateur et un mot de passe lors de la récupération des données de la base de données (cela réduit quelque peu la sécurité).

La présence de la ligne SOCKET=/var/run/mysqld/mysqld.sock dans /etc/odbc.ini est obligatoire !

2.2 Installation du connecteur JDBC pour MySQL

1) Vous devez télécharger la distribution du connecteur JDBC depuis la page Connector/J
sous forme de fichier DEB ou RPM (selon le système d'exploitation), pour votre distribution Linux :

Page de téléchargement du connecteur/J :
https://dev.mysql.com/downloads/connector/j/

2) Installez le fichier DEB ou RPM.

3. Création d'une base de données LibreOffice Base et connexion à MySQL

Dans n'importe quel programme LibreOffice, appelez l'élément de menu

  • Fichier - Nouveau - Base de données

Sur la première étape "Bienvenue dans l'assistant de base de données LibreOffice" choisir "Connectez-vous à la base de données existante"-MySQL
étape 1 - connectez-vous à la base de données MySQL existante

3.1 Option : utilisation du connecteur ODBC

Dans la deuxième étape, sélectionnez - à l'aide du connecteur odbc "Connexion via ODBC (Open Database Connectivity)":
étape 2 - odbc

A la troisième étape suivante de l'Assistant, saisissez le nom ou sélectionnez à l'aide du bouton "Parcourir..." le nom DSN préalablement précisé pour le connecteur ODBC.
étape 3 - sélection de la source de données odbc

Dans l’avant-dernière et quatrième étape, nous effectuons des tests. Si le nom d'utilisateur et le mot de passe sont enregistrés dans /etc/odbc.ini, vous n'avez pas besoin de les saisir.
test step4-odbc

Si /etc/odbc.ini est configuré correctement, il n'y aura aucune erreur. Sinon, modifiez le fichier odbc.ini et testez à nouveau.

Appuyez sur le bouton "Prêt!" en bas de la fenêtre de l'assistant et enregistrez la base de données dans un fichier de base de données ODF dans le dossier local de l'utilisateur.

Une base de données avec des tables externes de MySQL s'ouvrira. Vous pouvez ouvrir des tables et afficher des données :
ouvert

La connexion entre LibreOffice Base et MySQL est désormais opérationnelle.

3.2 Connexion de LibreOffice Base à MySQL à l'aide de JDBC

La classe MySQL JAR est installée dans le dossier /usr/share/java/ sous le nom mysql-connector-java-8.0.33.jar

Allez dans LibreOffice Calc - Outils - Options - Libreoffice - Options avancées pour ajouter le chemin de la classe java.sql.driver : Bouton "Class Path" - ouvrez la racine de l'Ordinateur dans la barre d'adresse - précisez le chemin /usr/share/java/mysql-connector-java-8.0.33.jar

Dans (Outils - Options - LibreOffice - Avancé). Coche "Utiliser la machine virtuelle Java" doit être activé.

Création d'une base de données dans LibreOffice Base avec communication via JDBC

Fichier - Créer - Base de données
L'étape 1 est la même pour ODBC et JDBC : "se connecter à une base de données MySQL existante".
étape 1 - connectez-vous à la base de données MySQL existante

À l'étape 2, sélectionnez JDBC :
étape 2 - Connexion via JDBC - Connectivité Java DataBase

A l'étape 3, vous devez spécifier les paramètres : nom de la base de données, serveur et port MySQL :

  • primer
  • localhost
  • 3306

Dans le champ "Nom de la classe", corrigez org.mariadb.jdbc.Driver en com.mysql.cj.jdbc.Driver

Attention : la classe indiquée dans certains manuels java.sql.Driver faux, utilisez le nom de classe "com.mysql.cj.jdbc.Driver"

Cliquez sur "Class Test" - Le pilote a été chargé avec succès.
jdbc3

A l'étape 4, précisez le nom d'utilisateur, un mot de passe est requis et cliquez sur « Tester la connexion »
jdbc-succès

Terminez en enregistrant la base de données LibreOffice dans un fichier sur votre disque dur.

Si l'erreur se produit "La classe de pilote 'java.sql.Driver' ne peut pas être chargée. ./connectivity/source/drivers/jdbc/JConnection.cxx:685"
ou "'com.mysql.jdbc.driver' ne peut pas être chargé".
Solution :changer de Java sur la build privée 1.8, redémarrez LibreOffice :
privé
Le nom de la classe à l'étape 3, comme indiqué ci-dessus, doit être com.mysql.cj.jdbc.Driver.
et le fichier de classe est spécifié dans Outils - Options - Libreoffice - Les options avancées ajoutent le chemin à la classe java.sql.driver : le chemin vers mysql-connector-java-8.0.33.jar ou mysql-connector-j-8.0.33.jar doit être /usr/share/java/mysql-connector-java-8.0.33.jar ou mysql-connector-j-8.0.33.jar

Remarque : La classe Java au format jar est installée lorsque vous exécutez le fichier DEB du connecteur, mais elle peut également être téléchargée depuis https://dev.mysql.com/downloads/connector/j/-Indépendant de la plateforme- archivez tat.gz dedans connecteur mysql-j-8.0.33.jar extrayez-le d'abord dans votre dossier personnel sans chemins, puis déplacez le fichier jar vers /usr/share/java/.

Résultat avec JDBC

Le résultat diffère de l'option ODBC - toutes les bases de données sont visibles, y compris celles du système (puisque la connexion se fait avec l'utilisateur root). Ignorer le nom de la base de données est, à mon avis, un inconvénient du connecteur JDBC par rapport à la connexion via ODBC.

résultat jdbc

Les tables MySQL via JDBC peuvent également être ouvertes dans LibreOffice Base pour être visualisées ou modifiées.
JDBC. N'oubliez pas de sauvegarder la base de données LibreOffice Base sur le disque en tant que fichier *.ODB.

Conclusion

L'article traite de deux méthodes de connexion depuis Base LibreOffice à la base de données MySQL-ODBC et JDBC. Les deux méthodes fonctionnent.

Article suivant



Publications connexes