1. ホーム
  2. java

[解決済み] JavaでCLOBから文字列、文字列からCLOBを読み込むための最も効率的なソリューション?

2022-02-10 12:06:45

質問

大きなCLOB(32kB以上)があり、StringBuilderを使ってStringに読み替えたいのですが、どうすればいいですか?最も効率的にこれを行うにはどうしたらよいでしょうか?私の CLOB の長さは "int" より長く、 "long" の値が必要なので、StringBuilder の "int length" コンストラクタを使用することができません。

私はJavaのI/Oクラスについてそれほど精通していないので、いくつかのガイダンスを得たいと思います。

編集 - clobToString()は以下のコードで試しました。

private String clobToString(Clob data) {
    StringBuilder sb = new StringBuilder();
    try {
        Reader reader = data.getCharacterStream();
        BufferedReader br = new BufferedReader(reader);

        String line;
        while(null != (line = br.readLine())) {
            sb.append(line);
        }
        br.close();
    } catch (SQLException e) {
        // handle this exception
    } catch (IOException e) {
        // handle this exception
    }
    return sb.toString();
}

解決方法は?

<ブロッククオート

のコンストラクタを使用することができません。 StringBuilder というのは、私の CLOB の長さが int が必要であり long の値を指定します。

CLOB の長さが int に収まらない場合、CLOB データは String にも収まらない。このような大量の XML データを扱うには、ストリーミングアプローチを使用する必要があります。

CLOB の実際の長さが Integer.MAX_VALUE を使用すれば、強制的に long から int を置くことで (int) をその前に置く。