1

INSERT ステートメントを含む Oracle テーブル ダンプがあります。一部のテーブルには、CLOB データ フィールドが含まれています。SQL Developer を使用してダンプを復元しようとすると、「ORA-01704: 文字列リテラルが長すぎます」というエラーが表示されます。

ここで、Java を使用して JDBC でダンプを復元しようとしました。問題は、完全に構成された PreparedStatement を既に持っているため、列のデータ型を文字列から clob に変更できないことです。

以下にアプリケーションを示します。

// strBufLine contains already the fully composed insert statement from the dump file
PreparedStatement pstmt = connection.prepareStatement("BEGIN " + strBufLine.toString() + " END;");
pstmt.executeUpdate();
pstmt.close();

この問題を解決する方法(別のプログラムを使用してダンプを復元する、他のダンプ手法、またはデータ型を clob に変更する方法)

4

1 に答える 1

0

文字列リテラルがSQL Developerにとって長すぎる場合、サーバー側で解析されるため、JDBCでも長すぎます。

ファイルを CSV または固定長ファイルに変換することをお勧めします。これは単一のテーブルのダンプであるため、それほど難しくはありません。したがって、各行は同様の構造になります。検索/置換を使用してテキスト エディターで実行することもできます。

次に、SQL Developer (目的のテーブルのコンテキスト メニューの [データのインポート... ]) を使用してインポートできます。

于 2012-07-14T17:39:41.327 に答える