0

最近,我参加了一个 IT 考试,其中有一个关于使用 LibreOffice 与 Linux 操作系统和 Access 97 数据库作为数据源进行邮件合并的问题。问题指出,没有连接到在 Linux 上正常工作的 Access 97 数据库的连接器

在我必须选择的选项中,其中之一是将 Access 数据导出到 CSV 文件,然后在 LibreOffice 上针对 CSV 文件定义数据源。

另一种是直接针对 Access 定义一个 LibreOffice 数据源。

我有一些过去使用 UCanAccess 从 Access 2000 数据库中提取一些数据的记忆,所以即使说没有合适的连接器可用,我还是选择了第二个选项,将 LibreOffice 直接连接到 Access。

显然,正确的答案是导出为 CSV 并使用它。

我很好奇,我从 Office 97 示例中获得了一个 Access 97 数据库。名称是(西班牙语)Neptuno.mdb

当我尝试在 UCanAccess 的 console.sh 中打开它时,我得到的是以下内容:

    警告:未知表达式:GenUniqueID()(IdProducto 表 Detalles de pedidos 列的默认值)
    首次加载 Cat�logo 时发生错误
    转换后的视图为:CREATE VIEW "CAT�LOGO" AS SELECT DISTINCT Categor�as.NombreCategor�a、Categor�as.Descripti�n、Categor�as.Imagen、Productos.IdProducto、Productos.NombreProducto、Productos.CantidadPorUnidad、Productos。 PrecioUnidad
    FROM "CATEGOR�AS" INNER JOIN Productos ON Categor�as.IdCategor�a = Productos.IdCategor�a
    WHERE (((Productos.Suspendido)=false))
    错误信息是 :palabra no esperado: �
    加载表:
    类别, 客户, Compa��as de env�os, Empleados, Pedidos, Proveedores, Productos, Detalles de pedidos
    加载的查询:
    Detalle de pedidos con descuento, Lista de productos actual, Los diez productos m�s caros, Productos sobre el precio medio, Subtotales por pedido
    加载程序:
    
    加载索引:
    分类列上的唯一索引:(NombreCategor.a)
    , 分类列上的主键:(IdCategor.a)
    , Clientes 列上的主键:(IdCliente)
    , Compa��as de env�os 列上的主键:(IdCompa��aEnv�os)
    , Detalles de pedidos 列上的主键:(IdPedido,IdProducto)
    , Empleados 列上的主键:(IdEmpleado)
    , Pedidos 列上的主键:(IdPedido)
    , Productos 列的主键:(IdProducto)
    , Proveedores 列上的主键:(IdProveedor)
    , FK on "DETALLES DE PEDIDOS" 列:(IdPedido) 参考 PEDIDOS 列:(IdPedido)
    , FK on "DETALLES DE PEDIDOS" 列:(IdProducto) 参考 PRODUCTOS 列:(IdProducto)
    , FK on PEDIDOS Columns: (IdCliente) References CLIENTES Columns: (IdCliente)
    , FK on PEDIDOS 列:(FormaEnv�o)参考“COMPA��AS DE ENV�OS”列:(IdCompa��aEnv�os)
    , FK on PEDIDOS Columns: (IdEmpleado) 参考 EMPLEADOS Columns: (IdEmpleado)
    , FK on PRODUCTOS 列:(IdCategor�a) 参考“CATEGOR�AS”列:(IdCategor�a)
    , FK on PRODUCTOS Columns: (IdProveedor) 参考 PROVEEDORES Columns: (IdProveedor)
    , 客户列索引: (Ciudad)
    ,客户列索引:(C�dPostal)
    , 客户列索引:(NombreCompa��a)
    , 客户列索引: (Regi�n)
    , Empleados 列索引:(Apellidos)
    , Empleados 列索引:(C�dPostal)
    , Pedidos 列索引:(C�dPostalDestinatario)
    , Pedidos 列索引:(FechaEnv�o)
    , Pedidos 列索引:(FechaPedido)
    , Productos 列索引:(NombreProducto)
    , Proveedores 列索引:(C�dPostal)
    , Proveedores 列索引:(NombreCompa��a)
    
    无法加载视图 Facturas : palabra no esperado: �
    无法加载视图 Lista alfab�tica de productos : palabra no esperado: �
    无法加载视图 Resumen de ventas por triestre : palabra no esperado: �
    无法加载视图 Filtro facturas : usuario no tiene privilegios suficientes o objeto no encontrado: FACTURAS
    无法加载视图 Ventas por categor�a para 1995 : palabra no esperado: �
    无法加载视图 Pedidos triestrales por producto : palabra no esperado: #
    无法加载视图 Consulta de pedidos : palabra no esperado: �
    无法加载视图 Pedidos triestrales : palabra no esperado: �
    无法加载视图 Productos por categor�a : palabra no esperado: �
    无法加载视图 Cat�logo : palabra no esperado: �
    无法加载视图 Ventas por a�o : usuario no tiene privilegios suficientes o objeto no encontrado: PARAMETERS
    无法加载视图 Clientes y Proveedores por ciudad : palabra no esperado: �
    无法加载视图 Totales de ventas por cantidad : palabra no esperado: �
    无法加载视图 Ventas de empleado por pa�s : usuario no tiene privilegios suficientes o objeto no encontrado: PARAMETERS
    无法加载视图 Ventas por categor�a : palabra no esperado: �
    无法加载查看 Ventas de productos para 1995 : palabra no esperado: �
    无法加载视图 Resumen de ventas por a�o : palabra no esperado: �
    UCanAccess>
    版权所有 (c) 2021 Marco Amadei
    UCanAccess 版本 5.0.1
    你已经连接了!!
    输入quit退出
    
    命令以 ; 结尾
    
    利用:   
       导出 [--help] [--bom] [-d ] [-t ] [--big_query_schema ] [--newlines] ;
    用于将最后执行的查询或特定表中的结果集导出到 .csv 文件中

示例数据库经常使用西班牙语字符(ñ、á、é、í、ó、ú 等)。在这些链接之后,除其他外:

SO链接1 SO链接2

我已经修改了一些代码片段来创建一个 jar 文件:

public class PruebaUCanAccess { public static void main(String[] args) { try { String base = "/home/some_username/access/office97_samples/NEPTUNO.MDB"; java.util.Properties propiedades = new java.util.Properties(); propiedades.put("jackcessOpener", "prueba.ucanaccess.CharsetOpener"); Connection conn= DriverManager.getConnection(String.format("jdbc:ucanaccess://%s", base),propiedades); try (ResultSet rsMD = conn.getMetaData().getTables(null, null, null, null)) { while (rsMD.next()) { String tblName = rsMD.getString("TABLE_NAME"); System.out.println(tblName); } } Statement st =conn.createStatement(); ResultSet rs=st.executeQuery("SELECT * FROM Clientes"); while (rs.next()) { System.out.println( rs.getString("NombreCompañía") + " , " + rs.getString("NombreContacto") + " , " + rs.getString("Dirección") + " , " + rs.getString("Ciudad") + " , " + rs.getString("CódPostal") + " , " + rs.getString("País")); } conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

而且我可以看到表名并包含正确拼写(即没有 ? 字符)。如果我包含我在 LibreOffice 类路径中生成的 jar,并将“;jackcessOpener=prueba.ucanaccess.CharsetOpener”添加到 LibreOffice 连接字符串,我设法在 LibreOffice 表和视图中查看拼写正确,并记录。

所以,关键是错误,当我创建一个链接到 mdb 的 odb 文件时也会出现错误,显然,错过加载表

任何人都可以对此有所了解吗?提前致谢。

4

0 回答 0