| | |
| | | |
| | | import com.hwtd.mes.collect.dto.DatabaseDTO; |
| | | import com.hwtd.mes.collect.service.DataCollectionService; |
| | | import com.hwtd.mes.collect.util.JackcessTableReader; |
| | | import com.zaxxer.hikari.HikariConfig; |
| | | import com.zaxxer.hikari.HikariDataSource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.sql.*; |
| | |
| | | */ |
| | | private final static List<String> MDB_EXCLUDE_TYPES = Arrays.asList("java.sql.Blob"); |
| | | |
| | | /** |
| | | * Access 读取方式: |
| | | * jackcess(默认)—— 用 jackcess 只读直读单表、按需取列,不构建 HSQLDB 镜像,只要表里几列时最快; |
| | | * ucanaccess —— 走原来的 SQL 路径(需要 Access SQL、链接表 remap 等场景时使用)。 |
| | | */ |
| | | @Value("${mes.access.read-mode:jackcess}") |
| | | private String accessReadMode = "jackcess"; |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getAccessData(DatabaseDTO databaseDTO) { |
| | | if (databaseDTO == null || StringUtils.isBlank(databaseDTO.getFilePath())) { |
| | | throw new RuntimeException("Access数据库文件路径不能为空"); |
| | | } |
| | | // 默认 jackcess 直读:只取某张表的几列不需要 SQL 引擎,也不用等整个库镜像进 HSQLDB |
| | | if (!"ucanaccess".equalsIgnoreCase(StringUtils.trimToEmpty(accessReadMode))) { |
| | | return JackcessTableReader.read(databaseDTO); |
| | | } |
| | | |
| | | List<Map<String,Object>> list = new ArrayList<>(); |
| | | try{ |
| | | Properties prop = new Properties(); |