CLOB
を別のデータベースにコピーしようとしています。しかし、私はThe Locator is invalid because it has been changed
エラーが発生します。Teradata CLOBとJDBC:ロケータが変更されたため無効です。ERROR
ResultSet
,PreparedStamenent
が閉じられているため、このarticleにこのようなことが起こる可能性があります。しかし、すべての私のオブジェクトは開いています。そして、私は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
ありがとうございます。 「実際のCLOBコンテンツを読む」とはどういう意味ですか?元のCLOBをローカル・ファイルに書き込んだ後、そのファイルから読み込んでターゲット・データベースにロードすることはできますか? – john
これは、あなたが非常に大きなテキストを話していることを既に知っていて、ロードのためにいくつかのTeradataツールを使うことができるなら、最良の選択肢かもしれません。 Jdbcに残しておきたいのであれば、ソースCLOBからcharacterStreamを取得して、それをターゲットCLOBの入力として設定できると思います。 – Insac
これらのTeradata jdbcサンプル(http://developer.teradata.com/doc/connectivity/jdbc/reference/current/samplePrograms.html)で、Lob管理の良い例がいくつか見つかります。 – Insac