7
6月
2023
如何将 LibreOffice Base 与 MySQL 链接
15:45

如何将 LibreOffice Base 与 MySQL 链接

7 6月 2023 15:45

在本文中,我将讨论如何将信息从 MySQL 传输到 Linux 上的 Libreoffice Base。

前言

LibreOffice 包含在许多(如果不是全部)Linux 发行版中。 此外,它可以从存储库安装并 上传为 DEB 或 RPM 文件

简介

在工作中,我大约每月一次使用 MySQL 数据库检查源 Excel 文件。 与 MySQL 的通信是使用 LibreOffice Base 和 ODBC 连接器实现的。

LibreOffice Base 是 MS Access 程序的类似物。
该数据库以唯一名称在 Linux 操作系统中注册,可从 LibreOffice Calc、Writer 和 LibreOffice Basic 访问。

在 MySQL DBMS 和 LibreOffice Base 之间,我使用了 ODBC 连接器。 后来我设法通过 JDBC 使用连接。

程序连接图

舍玛

DBMS MySql <-> mysql ODBC/JDBC 连接器 <-> LibreOffice Base <-> Libreoffice Calc

0.安装MySQL和LibreOffice

前面讨论过安装MySQL 关于 MySQL 的文章
如何在 Linux 上安装 LibreOffice 软件包 - 请参阅。维基文章

1. 数据库

众所周知,数据库是为了存储信息而设计的。 通常,它们是一组互连的表(关系数据库)。 在简单的数据库中,其中一张表必然是主表(例如,交易日志或仓库中的货物) - 其余的只是参考书。 就我而言,我使用了一个主表“offers”,我使用查询从中进行了选择。

出于测试目的,我将使用示例而不是真实的数据库进行展示。 为了示例起见,简化了字段的组成。

优惠

  • OFFER_ID - 整数(唯一关键字段)
  • NAME - 姓名
  • DESCRIPTION - 描述
  • PRICE -价格
  • DISPLAY - 标志(0 或 -1 - 不显示(隐藏条目/已出售),1 或 2 - 显示(出售/促销)

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

数据库转储文件 底漆 对于 MYSQL:
底漆.sql.zip

要创建数据库,请以数据库用户身份运行此脚本 :

mysql -u user -p
source primer.sql

2.连接MySQL的方式

页面上列出了连接 MySQL 的所有编程方式 https://www.mysql.com/products/connector/- 有专有驱动程序 ADO.NET、JDBC、ODBC、Python 以及由 PHP Drivers for MySQL 社区开发的驱动程序等。

我检查了 MySQL 的连接方法 - ODBC 或 JDBC。
我更喜欢 ODBC,因为我已经使用它很长时间了。

但您可以通过以下任一方式安装它:

  • MySQL 的 ODBC 连接器 - 参见第 2.1 段
  • MySQL 的 JDBC 连接器 - 参见第 2.2 段

2.1 安装 MySQL 的 ODBC 连接器

找出操作系统版本号:

lsb_release -a

下载适合您的 Ubuntu 或 Debian 版本的 ODBC 连接器发行版。
为此,请转到以下页面:
https://dev.mysql.com/downloads/connector/odbc/
我们在哪里下载适用于我们操作系统的 MySQL ODBC 连接器发行版:

如果发行版是 Linux Mint,请找出软件包基础。要求 在搜索引擎中。
例如,对于 Limux Mint 21.1 - Ubuntu 代码库是 22.04。

也就是说,对于 Linux Mint 21.x,您需要下载 Ubuntu Linux 22.04(x86,64 位),DEB 软件包(mysql-connector-odbc_8.2.0-1ubuntu22.04_amd64.deb) 不带调试符号 (dbg) 大小为 1.9 MB。 在下一页上单击“不用了,谢谢,只需开始下载”。

双击依赖项(3 个)来安装下载的 ODBC 连接器包(DEB 文件)。

从终端运行可执行文件 myodbc 安装程序- 它将显示有关从命令行使用连接器的帮助:

myodbc-installer

当不带参数调用 myodbc-installer 时,将显示该程序的帮助。

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

请注意,ODBC 连接器版本 8.0.2 对应于 mysql 服务器版本 - 8.0.35。

我们的目标是创建一个DSN数据源!

ODBC 的 DSN 设置存储在文本配置文件中 /etc/odbc.ini

首先,让我们检查已安装的 ODBC 驱动程序:

myodbc-installer -d -l

结果:
MySQL
MySQL ODBC 8.2 Unicode 驱动程序
MySQL ODBC 8.2 ANSI 驱动程序

添加名为“primer”的新系统 ODBC 数据 DSN 源
连接到 mysql 数据库“primer”( 用sudo执行! )。
请注意 -t 开关中传递的连接参数:

简要命令- 此后您需要编辑 /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" 

全队(推荐) - 编辑文件后 /etc/odbc.ini 不需要。

 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" 

! 如果需要删除错误的数据源,命令为: sudo /myodbc-installer -s -r -n prime_err

其中 -c2 表示系统数据源(不是用户)。 Database=primer - MYSQL 中的数据库名称

验证数据源创建(列表输出)

myodbc-installer -s -l

结果:
primer - MySQL ODBC 8.2 Unicode 驱动程序

ODBC 连接器中的数据源 成功 创建的。 ODBC 数据源现在可在该 PC 的操作系统中使用。

编辑/etc/odbc.ini

如果不设置Socket=/var/run/mysqld/mysqld.sock参数,连接数据库连接器时会产生错误
[MySQL][ODBC 5.3(a) 驱动程序]无法连接到本地
MySQL服务器通过套接字'/tmp
mysql.sock' (2)./connectivity/source/drivers/odbc/
OTools.cxx:357

通过添加缺少的行来更正 odbc.ini。
“入门”源的 DSN 正确文件示例:

odbc.ini 不包含密码

[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 带有明文密码

[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

正如您可能猜到的那样,这两个选项之间的区别在于“使用密码”从数据库检索数据时不需要输入用户名和密码(这在一定程度上降低了安全性)。

! /etc/odbc.ini 中必须存在 SOCKET=/var/run/mysqld/mysqld.sock 行!

2.2 安装 MySQL 的 JDBC 连接器

1) 您需要从 Connector/J 页面下载 JDBC 连接器发行版
作为 DEB 或 RPM 文件(取决于操作系统),适用于您的 Linux 发行版:

连接器/J下载页面:
https://dev.mysql.com/downloads/connector/j/

2) 安装DEB或RPM文件。

3. 创建 LibreOffice Base 数据库并将其连接到 MySQL

在任何 LibreOffice 程序中,调用菜单项

  • 文件 - 新建 - 数据库

第一步 “欢迎使用 LibreOffice 数据库向导” 选择 “连接到现有数据库”-MySQL
步骤 1 - 连接到现有的 mysql 数据库

3.1 选项:使用 ODBC 连接器

第二步,选择-使用odbc连接器 “通过 ODBC(开放数据库连接)连接”:
步骤 2 - odbc

在向导的下一步(第三步)中,输入名称或使用“浏览...”按钮选择先前为 ODBC 连接器指定的 DSN 名称
步骤 3 - odbc 数据源选择

在倒数第二步,即第四步中,我们进行测试。 如果用户名和密码保存在/etc/odbc.ini中,则无需输入。
步骤4-odbc-测试

如果/etc/odbc.ini配置正确,就不会出现错误。 否则,编辑 odbc.ini 文件并再次测试。

按下按钮 “准备好了!” 并将数据库保存到用户本地文件夹中的 ODF 数据库文件中。

将打开一个包含 MySQL 外部表的数据库。您可以打开表并查看数据:
打开

LibreOffice Base 和 MySQL 之间的连接现已启动并正在运行。

3.2 使用 JDBC 连接 LibreOffice Base 和 MySQL

MySQL JAR 类安装在 /usr/share/java/ 文件夹中,名称为 mysql-connector-java-8.0.33.jar

进入LibreOffice Calc - 工具 - 选项 - Libreoffice - 高级选项添加java.sql.driver类的路径:“类路径”按钮 - 在地址栏中打开计算机的根目录 - 指定路径/usr/share/java/mysql-connector-java-8.0.33.jar

!在(工具 - 选项 - LibreOffice - 高级)中。复选标记 《使用Java虚拟机》 必须启用。

在 LibreOffice Base 中创建数据库并通过 JDBC 进行通信

文件-创建-数据库
步骤 1 对于 ODBC 和 JDBC 是相同的 - “连接到现有的 MySQL 数据库
步骤 1 - 连接到现有的 mysql 数据库

在步骤2中,选择 JDBC:
步骤 2 - 通过 JDBC 连接 - Java 数据库连接

在第 3 步,您需要指定参数:数据库名称、服务器和 MySQL 端口:

  • primer
  • localhost
  • 3306

在“类名”字段中,将 org.mariadb.jdbc.Driver 更正为 com.mysql.cj.jdbc.驱动程序

! 注意:部分手册中注明的类别 java.sql.驱动程序 错误,使用类名“com.mysql.cj.jdbc.Driver"

单击“类测试”-驱动程序已成功加载。
数据库连接3

步骤4,指定用户名,需要密码,然后单击“测试连接"

jdbc-成功

最后将 LibreOffice 数据库保存到硬盘上的文件中。

如果出现错误“无法加载驱动程序类'java.sql.Driver'。./connectivity/source/drivers/jdbc/JConnection.cxx:685"

“无法加载'com.mysql.jdbc.driver'”
解决方案: 改变java 在私有版本 1.8 上,重新启动 LibreOffice:
私人的
上面第3步中的类名应该是com.mysql.cj.jdbc.Driver
并且在工具 - 选项 - Libreoffice - 高级选项中指定类文件添加 java.sql.driver 类的路径: mysql-connector-java-8.0.33.jar 或 mysql-connector-j-8.0.33.jar 的路径应为 /usr/share/java/mysql-connector-java-8.0.33.jar 或 mysql-connector-j-8.0.33.jar

注意:jar 格式的 java 类在运行连接器 DEB 文件时安装,但也可以从 https://dev.mysql.com/downloads/connector/j/-平台无关- 将 tat.gz 存档在其中 mysql-connector-j-8.0.33.jar 首先将其解压到您的主文件夹 没有路径,然后将 jar 移动到 /usr/share/java/。

JDBC 的结果

结果与 ODBC 选项不同 - 所有数据库都是可见的,包括系统数据库(因为连接是与 root 用户进行的)。 在我看来,与通过 ODBC 连接相比,忽略数据库名称是 JDBC 连接器的一个缺点。

jdbc 结果

通过 JDBC 的 MySQL 表也可以在 LibreOffice Base 中打开以进行查看或编辑。
数据库连接。 不要忘记将 LibreOffice Base 数据库作为 *.ODB 文件保存到磁盘。

结论

本文讨论了两种连接方法 LibreOffice基地 到数据库 MySQL-ODBC数据库连接。 两种方法都有效。

下一篇



相关出版物