Недавно я сдавал экзамен по информационным технологиям, в котором задавался вопрос об объединении почты с использованием LibreOffice с ОС Linux и базе данных Access 97 в качестве источника данных. В вопросе говорилось, что нет соединителя для базы данных Access 97, который правильно работает в Linux.
Среди вариантов, которые мне нужно было выбрать, одним из них был экспорт данных Access в файл CSV, а затем определение источника данных в LibreOffice для файла CSV.
Другой заключался в том, чтобы определить источник данных LibreOffice непосредственно для Access.
У меня были некоторые воспоминания из прошлого, когда я использовал UCanAccess для извлечения некоторых данных из базы данных Access 2000, поэтому даже было сказано, что нет подходящего коннектора, я выбрал второй вариант, подключить LibreOffice напрямую к Access.
Судя по всему, правильным ответом было экспортировать в CSV и использовать его.
Мне любопытно, и у меня есть база данных Access 97 из образцов Office 97. Название (на испанском языке) Neptuno.mdb
Когда я пытаюсь открыть его в console.sh UCanAccess, я получаю следующее:
WARNING:Unknown expression: GenUniqueID() (default value of column IdProducto table Detalles de pedidos) Error occured at the first loading attempt of Cat�logo Converted view was :CREATE VIEW "CAT�LOGO" AS SELECT DISTINCT Categor�as.NombreCategor�a, Categor�as.Descripci�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)) Error message was :palabra no esperado: � Loaded Tables: Categor�as, Clientes, Compa��as de env�os, Empleados, Pedidos, Proveedores, Productos, Detalles de pedidos Loaded Queries: Detalle de pedidos con descuento, Lista de productos actual, Los diez productos m�s caros, Productos sobre el precio medio, Subtotales por pedido Loaded Procedures: Loaded Indexes: Index Unique on Categor�as Columns: (NombreCategor�a) , Primary Key on Categor�as Columns: (IdCategor�a) , Primary Key on Clientes Columns: (IdCliente) , Primary Key on Compa��as de env�os Columns: (IdCompa��aEnv�os) , Primary Key on Detalles de pedidos Columns: (IdPedido,IdProducto) , Primary Key on Empleados Columns: (IdEmpleado) , Primary Key on Pedidos Columns: (IdPedido) , Primary Key on Productos Columns: (IdProducto) , Primary Key on Proveedores Columns: (IdProveedor) , FK on "DETALLES DE PEDIDOS" Columns: (IdPedido) References PEDIDOS Columns: (IdPedido) , FK on "DETALLES DE PEDIDOS" Columns: (IdProducto) References PRODUCTOS Columns: (IdProducto) , FK on PEDIDOS Columns: (IdCliente) References CLIENTES Columns: (IdCliente) , FK on PEDIDOS Columns: (FormaEnv�o) References "COMPA��AS DE ENV�OS" Columns: (IdCompa��aEnv�os) , FK on PEDIDOS Columns: (IdEmpleado) References EMPLEADOS Columns: (IdEmpleado) , FK on PRODUCTOS Columns: (IdCategor�a) References "CATEGOR�AS" Columns: (IdCategor�a) , FK on PRODUCTOS Columns: (IdProveedor) References PROVEEDORES Columns: (IdProveedor) , Index on Clientes Columns: (Ciudad) , Index on Clientes Columns: (C�dPostal) , Index on Clientes Columns: (NombreCompa��a) , Index on Clientes Columns: (Regi�n) , Index on Empleados Columns: (Apellidos) , Index on Empleados Columns: (C�dPostal) , Index on Pedidos Columns: (C�dPostalDestinatario) , Index on Pedidos Columns: (FechaEnv�o) , Index on Pedidos Columns: (FechaPedido) , Index on Productos Columns: (NombreProducto) , Index on Proveedores Columns: (C�dPostal) , Index on Proveedores Columns: (NombreCompa��a) Cannot load view Facturas : palabra no esperado: � Cannot load view Lista alfab�tica de productos : palabra no esperado: � Cannot load view Resumen de ventas por trimestre : palabra no esperado: � Cannot load view Filtro facturas : usuario no tiene privilegios suficientes o objeto no encontrado: FACTURAS Cannot load view Ventas por categor�a para 1995 : palabra no esperado: � Cannot load view Pedidos trimestrales por producto : palabra no esperado: # Cannot load view Consulta de pedidos : palabra no esperado: � Cannot load view Pedidos trimestrales : palabra no esperado: � Cannot load view Productos por categor�a : palabra no esperado: � Cannot load view Cat�logo : palabra no esperado: � Cannot load view Ventas por a�o : usuario no tiene privilegios suficientes o objeto no encontrado: PARAMETERS Cannot load view Clientes y proveedores por ciudad : palabra no esperado: � Cannot load view Totales de ventas por cantidad : palabra no esperado: � Cannot load view Ventas de empleado por pa�s : usuario no tiene privilegios suficientes o objeto no encontrado: PARAMETERS Cannot load view Ventas por categor�a : palabra no esperado: � Cannot load view Ventas de productos para 1995 : palabra no esperado: � Cannot load view Resumen de ventas por a�o : palabra no esperado: � UCanAccess> Copyright (c) 2021 Marco Amadei UCanAccess version 5.0.1 You are connected!! Type quit to exit Commands end with ; Use: export [--help] [--bom] [-d ] [-t ] [--big_query_schema ] [--newlines] ; for exporting the result set from the last executed query or a specific table into a .csv file
Образец базы данных часто использует испанские символы (ñ, á, é, í, ó, ú и т. д.). По этим ссылкам, среди прочего:
Я адаптировал фрагмент кода для создания файла 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, и добавлю «; jackcessOpener = prueba.ucanaccess.CharsetOpener» в строку подключения LibreOffice, мне удастся увидеть в таблице LibreOffice и представлениях, написанных правильно, а также записи.
Итак, дело в ошибках, которые также появляются, когда я создаю файл odb, связанный с файлом mdb, и, видимо, пропускаю загрузку таблиц.
Кто-нибудь может пролить свет на это? Заранее спасибо.