7
Juni
2023
So verknüpfen Sie LibreOffice Base mit MySQL
15:45

So verknüpfen Sie LibreOffice Base mit MySQL

7 Juni 2023 15:45

In diesem Artikel spreche ich darüber, wie man Informationen von MySQL nach Libreoffice Base unter Linux überträgt.

Vorwort

LibreOffice ist in vielen, wenn nicht allen Linux-Distributionen enthalten. Es kann auch aus dem Repository installiert werden und als DEB- oder RPM-Datei hochladen.

Einführung

Bei der Arbeit überprüfte ich etwa einmal im Monat die Excel-Quelldatei mit der MySQL-Datenbank. Die Kommunikation mit MySQL wurde über LibreOffice Base und den ODBC-Connector realisiert.

LibreOffice Base ist ein Analogon des MS Access-Programms.
Die Datenbank ist im Linux-Betriebssystem unter einem eindeutigen Namen registriert und über LibreOffice Calc, Writer und LibreOffice Basic zugänglich.

Zwischen dem MySQL-DBMS und LibreOffice Base habe ich den ODBC-Connector verwendet. Später gelang es mir, die Verbindung über JDBC zu nutzen.

Programmverbindungsdiagramm

Shema

DBMS MySql <-> MySQL ODBC/JDBC-Connector <-> LibreOffice Base <-> Libreoffice Calc

0. MySQL und LibreOffice installieren

Die Installation von MySQL wurde bereits oben besprochen Artikel über MySQL.
So installieren Sie das LibreOffice-Paket unter Linux – siehe.Wiki-Artikel.

1. Datenbank

Wie jeder weiß, dienen Datenbanken der Speicherung von Informationen. In der Regel handelt es sich um eine Reihe miteinander verbundener Tabellen (relationale Datenbank). In einfachen Datenbanken ist eine der Tabellen notwendigerweise die Haupttabelle (z. B. ein Transaktionsprotokoll oder Waren in einem Lager) – der Rest sind nur Nachschlagewerke. In meinem Fall habe ich eine Haupttabelle „Angebote“ verwendet, aus der ich mithilfe von Abfragen eine Auswahl getroffen habe.

Zu Testzwecken zeige ich es anhand eines Beispiels und nicht anhand einer echten Datenbank. Der Aufbau der Felder ist beispielhaft vereinfacht.

Tisch Angebote

  • ID – Ganzzahl (eindeutiges Schlüsselfeld)
  • NAME - Name
  • DESCRIPTION - Beschreibung
  • PRICE - Preis
  • DISPLAY – Zeichen (0 oder -1 – nicht anzeigen (versteckter Eintrag / verkauft), 1 oder 2 – Anzeige (im Angebot / Sonderangebot)

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);

dB-Dump-Datei Grundierung für MYSQL:
primer.sql.zip

Um eine Datenbank zu erstellen, führen Sie dieses Skript als Datenbankbenutzer aus Wurzel:

mysql -u root -p
source primer.sql

2. Möglichkeiten zur Verbindung mit MySQL

Alle programmgesteuerten Möglichkeiten zur Verbindung mit MySQL sind auf der Seite aufgeführt https://www.mysql.com/products/connector/- Es gibt proprietäre Treiber ADO.NET, JDBC, ODBC, Python und solche, die von der PHP Drivers for MySQL-Community usw. entwickelt wurden.

Ich habe die Verbindungsmethode zu MySQL überprüft – ODBC oder JDBC.
Ich habe ODBC bevorzugt, da ich es schon lange verwende.

Sie können es jedoch auf eine der folgenden Arten installieren:

  • ODBC-Anschluss für MySQL – siehe Abschnitt 2.1
  • JDBC-Connector für MySQL – siehe Abschnitt 2.2

2.1 Installation des ODBC-Connectors für MySQL

Finden Sie die Versionsnummer des Betriebssystems heraus:

lsb_release -a

Laden Sie die ODBC-Connector-Distribution für Ihre Version von Ubuntu oder Debian herunter.
Gehen Sie dazu auf die folgende Seite:
https://dev.mysql.com/downloads/connector/odbc/
Wo laden wir die ODBC-Connector-Distribution für MySQL für unser Betriebssystem herunter:

Wenn es sich bei der Distribution um Linux Mint handelt, ermitteln Sie die Paketbasis.Anfrage in einer Suchmaschine.
Für Limux Mint 21.1 ist die Ubuntu-Codebasis beispielsweise 22.04.

Das heißt, Sie müssen Linux Mint 21.x herunterladen Ubuntu Linux 22.04 (x86, 64-Bit), DEB-Paket(mysql-connector-odbc_8.2.0-1ubuntu22.04_amd64.deb) ohne Debug-Symbole (dbg) 1,9 MB groß. Klicken Sie auf der nächsten Seite auf „Nein danke, starten Sie einfach meinen Download“.

Installieren Sie das heruntergeladene ODBC-Connector-Paket (DEB-Datei) durch Doppelklick auf die Abhängigkeiten (3 Stk.).

Führen Sie die ausführbare Datei vom Terminal aus myodbc-Installer- Es wird Hilfe zur Verwendung des Connectors über die Befehlszeile angezeigt:

myodbc-installer

Beim Aufruf von myodbc-installer ohne Parameter wird Hilfe zum Programm angezeigt.

[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"                    
+---  

Bitte beachten Sie, dass die ODBC-Connector-Version 8.0.2 der MySQL-Server-Version 8.0.35 entspricht.

Unser Ziel ist die Schaffung einer DSN-Datenquelle!

DSN-Einstellungen für ODBC werden in einer Textkonfigurationsdatei gespeichert /etc/odbc.ini

Schauen wir uns zunächst die installierten ODBC-Treiber an:

myodbc-installer -d -l

Ergebnis:
MySQL
MySQL ODBC 8.2 Unicode-Treiber
MySQL ODBC 8.2 ANSI-Treiber

Hinzufügen einer neuen System-ODBC-Daten-DSN-Quelle mit dem Namen „primer“
verbunden mit der MySQL-Datenbank „primer“ (mit sudo ausführen!).
Bitte beachten Sie die im Schalter -t übergebenen Verbindungsparameter:

Kurzer Befehl- Danach müssen Sie /etc/odbc.ini bearbeiten:

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" 

Volles Befehle ([Mark]empfohlen[/Mark]) – Bearbeiten Sie anschließend die Datei /etc/odbc.ini keine Notwendigkeit.

 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" 

Wenn Sie die fehlerhafte Datenquelle entfernen müssen, lautet der Befehl: sudo /myodbc-installer -s -r -n primer_err

wobei -c2 für die Systemdatenquelle steht (nicht für den Benutzer). Database=primer – Datenbankname in MYSQL

Erstellung der Datenquelle überprüfen (Listenausgabe)

myodbc-installer -s -l

Ergebnis:
primer – MySQL ODBC 8.2 Unicode-Treiber

Datenquelle im ODBC-Connector erfolgreich erstellt. Die ODBC-Datenquelle ist jetzt im Betriebssystem dieses PCs verfügbar.

Bearbeiten von /etc/odbc.ini

Wenn Sie den Parameter Socket=/var/run/mysqld/mysqld.sock nicht festlegen, wird beim Herstellen einer Verbindung zum Datenbank-Connector ein Fehler generiert
[MySQL][ODBC 5.3(a)-Treiber]Es kann keine Verbindung zum lokalen Server hergestellt werden
MySQL-Server über Socket '/tmp
mysql.sock' (2)./connectivity/source/drivers/odbc/
OTools.cxx:357

Korrigieren Sie odbc.ini, indem Sie die fehlenden Zeilen hinzufügen.
Ein Beispiel einer korrekten Datei mit DSN für die „Primer“-Quelle:

odbc.ini enthält kein Passwort

[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 mit Klartext-Passwort

[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

Der Unterschied zwischen den beiden Optionen besteht, wie Sie sich vielleicht vorstellen können, darin, dass Sie „mit Passwort“ beim Abrufen von Daten aus der Datenbank keinen Benutzernamen und kein Passwort eingeben müssen (dies verringert die Sicherheit etwas).

Das Vorhandensein der Zeile SOCKET=/var/run/mysqld/mysqld.sock in /etc/odbc.ini ist zwingend erforderlich!

2.2 Installation des JDBC-Connectors für MySQL

1) Sie müssen die JDBC-Connector-Distribution von der Connector/J-Seite herunterladen
als DEB- oder RPM-Datei (abhängig vom Betriebssystem) für Ihre Linux-Distribution:

Connector/J-Downloadseite:
https://dev.mysql.com/downloads/connector/j/

2) Installieren Sie die DEB- oder RPM-Datei.

3. Erstellen einer LibreOffice Base-Datenbank und Verbinden dieser mit MySQL

Rufen Sie in jedem LibreOffice-Programm den Menüpunkt auf

  • Datei – Neu – Datenbank

Auf dem ersten Schritt „Willkommen beim LibreOffice-Datenbankassistenten“ wählen „Mit vorhandener Datenbank verbinden“-MySQL
Schritt 1 – Verbindung zur vorhandenen MySQL-Datenbank herstellen

3.1 Option: Verwendung des ODBC-Anschlusses

Wählen Sie im zweiten Schritt – mithilfe des odbc-Connectors „Anbindung über ODBC (Open Database Connectivity)“:
Schritt 2 – odbc

Geben Sie im nächsten, dritten Schritt des Assistenten den Namen ein oder wählen Sie über die Schaltfläche „Durchsuchen…“ den zuvor für den ODBC-Connector festgelegten DSN-Namen aus
Schritt 3 – Auswahl der ODBC-Datenquelle

Im vorletzten, vierten Schritt führen wir Tests durch. Wenn Benutzername und Passwort in /etc/odbc.ini gespeichert sind, müssen Sie diese nicht eingeben.
step4-odbc-test

Wenn /etc/odbc.ini korrekt konfiguriert ist, treten keine Fehler auf. Andernfalls bearbeiten Sie die Datei odbc.ini und testen Sie erneut.

Drücken Sie die Taste „Bereit!“ unten im Assistentenfenster und speichern Sie die Datenbank in einer ODF-Datenbankdatei im lokalen Ordner des Benutzers.

Es öffnet sich eine Datenbank mit externen Tabellen von MySQL. Sie können Tabellen öffnen und Daten anzeigen:
offen

Die Verbindung zwischen LibreOffice Base und MySQL ist nun eingerichtet und betriebsbereit.

3.2 Verbindung von LibreOffice Base mit MySQL über JDBC

Die MySQL-JAR-Klasse wird im Ordner /usr/share/java/ mit dem Namen mysql-connector-java-8.0.33.jar installiert

Gehen Sie zu LibreOffice Calc – Extras – Optionen – Libreoffice – Erweiterte Optionen, um den Pfad zur Klasse java.sql.driver hinzuzufügen: Schaltfläche „Klassenpfad“ – öffnen Sie das Stammverzeichnis des Computers in der Adressleiste – geben Sie den Pfad /usr/share/java/mysql-connector-java-8.0.33.jar an

In (Extras – Optionen – LibreOffice – Erweitert). Häkchen „Verwenden Sie die Java Virtual Machine“ muss aktiviert sein.

Erstellen einer Datenbank in LibreOffice Base mit Kommunikation über JDBC

Datei – Erstellen – Datenbank
Schritt 1 ist für ODBC und JDBC gleich: „Herstellen einer Verbindung zu einer vorhandenen MySQL-Datenbank“.
Schritt 1 – Verbindung zur vorhandenen MySQL-Datenbank herstellen

Wählen Sie in Schritt 2 JDBC aus:
Schritt 2 – Verbindung über JDBC – Java DataBase Connectivity

In Schritt 3 müssen Sie die Parameter angeben: Datenbankname, Server und MySQL-Port:

  • primer
  • localhost
  • 3306

Korrigieren Sie im Feld „Klassenname“ org.mariadb.jdbc.Driver zu com.mysql.cj.jdbc.Driver

Achtung: Die in einigen Handbüchern angegebene Klasse java.sql.Treiber falsch, verwenden Sie den Klassennamen „com.mysql.cj.jdbc.Driver“

Klicken Sie auf „Klassentest“ – der Treiber wurde erfolgreich geladen.
jdbc3

Geben Sie in Schritt 4 den Benutzernamen an, ein Passwort ist erforderlich und klicken Sie auf „Verbindung testen“
jdbc-Erfolg

Zum Abschluss speichern Sie die LibreOffice-Datenbank in einer Datei auf Ihrer Festplatte.

Wenn der Fehler auftritt: „Die Treiberklasse ‚java.sql.Driver‘ kann nicht geladen werden. ./connectivity/source/drivers/jdbc/JConnection.cxx:685“
oder „‚com.mysql.jdbc.driver‘ kann nicht geladen werden“.
Lösung:Java ändern starten Sie LibreOffice im privaten Build 1.8 neu:
privat
Der Klassenname in Schritt 3 sollte wie oben angegeben com.mysql.cj.jdbc.Driver lauten
und die Klassendatei wird unter Extras – Optionen – Libreoffice – Erweiterte Optionen angegeben. Fügen Sie den Pfad zur Klasse java.sql.driver hinzu: Der Pfad zu mysql-connector-java-8.0.33.jar oder mysql-connector-j-8.0.33.jar sollte /usr/share/java/mysql-connector-java-8.0.33.jar sein mysql-connector-j-8.0.33.jar

Hinweis: Die Java-Klasse im JAR-Format wird installiert, wenn Sie die Connector-DEB-Datei ausführen, sie kann aber auch von heruntergeladen werden https://dev.mysql.com/downloads/connector/j/-Plattformunabhängig- Archiv tat.gz darin mysql-connector-j-8.0.33.jar extrahieren Sie es zuerst in Ihren Home-Ordner ohne Wege, dann verschieben Sie das JAR nach /usr/share/java/.

Ergebnis mit JDBC

Das Ergebnis unterscheidet sich von der ODBC-Option – alle Datenbanken sind sichtbar, auch die Systemdatenbanken (da die Verbindung mit dem Root-Benutzer besteht). Das Ignorieren des Datenbanknamens ist meiner Meinung nach ein Nachteil des JDBC-Connectors gegenüber der Verbindung über ODBC.

JDBC-Ergebnis

MySQL-Tabellen können über JDBC auch in LibreOffice Base zum Anzeigen oder Bearbeiten geöffnet werden.
JDBC. Vergessen Sie nicht, die LibreOffice Base-Datenbank als *.ODB-Datei auf der Festplatte zu speichern.

Fazit

Der Artikel beschreibt zwei Methoden zum Herstellen einer Verbindung LibreOffice-Basis zur Datenbank MySQL-ODBC und JDBC. Beide Methoden funktionieren.

Nächster Artikel



Verwandte Veröffentlichungen