0
我試圖將CLOB
從一個數據庫複製到另一個。但是我得到The Locator is invalid because it has been changed
錯誤。Teradata CLOB和JDBC:定位器無效,因爲它已被更改錯誤
這個article說這可能發生,因爲ResultSet
,PreparedStamenent
已關閉。但是,我的所有物品都已開放。當我嘗試executeBatch()
Statement select = connectionDB1.createStatement();
ResultSet rs = select.executeQuery("SELECT TOP 1 myClob FROM myTab");
rs.next();
PreparedStatement ps = connectionDB2.prepareStatement("INSERT INTO myTab2 SELECT ? ");
ps.setClob(1, rs.getClob(1));
System.out.println("CLOB inserted");
ps.addBatch();
ps.executeBatch(); // ERROR is thrown here before I close any objects WHY?
// java.sql.BatchUpdateException
爲什麼會發生這種情況是拋出的錯誤?如何防止這一點?
PS:VARCHAR,DECIMAL
謝謝+1。 「讀取實際的CLOB內容」是什麼意思?你是否想將原始CLOB寫入本地文件,然後從該文件讀取並將其加載到目標數據庫? – john
如果您已經知道您正在討論非常大的文本,並且您可以使用一些Teradata工具進行加載,則這可能是最佳選擇。如果你想留在Jdbc中,我想你可以從源CLOB獲取characterStream並將其設置爲目標CLOB的輸入。 – Insac
您可以在這些Teradata jdbc示例中找到Lob管理的一些很好的示例(http://developer.teradata.com/doc/connectivity/jdbc/reference/current/samplePrograms.html) – Insac