首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

GeoTools 導入 SHP 至 Oracle 遭遇底線表名問題:ojdbc 版本升級解決方案

     編輯:Oracle 資料庫相關知識

問題現象

使用 GeoTools 將 Shapefile 導入 Oracle 空間資料庫時,若目標表名包含底線(如 MY_TABLE),呼叫 DataStore.getFeatureWriterAppend() 會拋出例外,導入失敗。

DataStore dsOracle = ...;
FeatureWriter writer =
  dsOracle.getFeatureWriterAppend("MY_TABLE", Transaction.AUTO_COMMIT); // 失敗

根因分析

經查證為 Oracle JDBC 驅動版本過舊。專案原使用 Maven 中央倉庫的 ojdbc:ojdbc:14(對應 Oracle 10g 時代的 ojdbc14.jar),不支援 Oracle 11g/12c 的某些元資料查詢語法,導致含底線表名的識別失敗。

解決方案:升級至 ojdbc6 (11g) 或 ojdbc8 (12c+)

Maven 依賴更新

<!-- Oracle 11g 環境建議 ojdbc6 -->
<dependency>
  <groupId>cn.guoyukun.jdbc</groupId>
  <artifactId>oracle-ojdbc6</artifactId>
  <version>11.2.0.3.0</version>
</dependency>

<!-- Oracle 12c/18c/19c 環境建議 ojdbc8 -->
<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>19.3.0.0</version>
</dependency>

Maven Central ojdbc 14 搜尋結果

Maven Central oracle-ojdbc6 搜尋結果

驗證步驟

  1. 更新 pom.xml 依賴
  2. mvn clean compile 重新建構
  3. 執行導入程式,確認底線表名正常寫入

補充說明

  • ojdbc14 僅支援 JDK 1.4/1.5,已停止維護
  • ojdbc6 支援 JDK 6/7,對應 Oracle 11.2.0.3
  • ojdbc7 支援 JDK 7/8,對應 Oracle 12.1
  • ojdbc8 支援 JDK 8/11/17,對應 Oracle 12.2/18c/19c,新專案首選
  • 若公司內網無法連 Maven Central,需將 jar 部署至私有 Nexus/Artifactory

相容性對照表

JDBC Jar支援 JDK對應 Oracle DB備註
ojdbc141.4/1.510g/11gR1已淘汰
ojdbc66/711.2.0.3+舊專案維護用
ojdbc77/812.1過渡版本
ojdbc88/11/1712.2/18c/19c/21c推薦新專案
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved