sql >> データベース >  >> RDS >> Oracle

CLOBをOracleデータベースに挿入します

    あなたはそれを複雑にする方法を作っています。

    リスト内の各clobにPreparedStatementとaddBatch()を使用します:

    String sql = "insert  into " + tempTableName + " values (?)";
    PreparedStatement stmt = connection.prepareStatement(sql);
    for (String query : readQueries) {
      stmt.setCharacterStream(1, new StringReader(query), query.lenght());
      stmt.addBatch();
    }
    stmt.exececuteBatch();
    

    エスケープする文字列をいじったり、リテラルの長さに問題がなかったり、一時的なClobを作成したりする必要はありません。そして、おそらく単一のINSERTALLステートメントを使用するのと同じくらい高速です。

    現在のドライバー(> 10.2)を使用している場合は、setCharacterStream()呼び出しとリーダーの作成も必要ないと思います。単純なsetString(1, query) おそらく同様に機能します。



    1. 接続されているデータベースは読み取り専用です

    2. SSMSの結果をグリッドに-CRLFはコピー/貼り付けで保存されません-より良いテクニックはありますか?

    3. Oracleの数値を含む行を返す

    4. 存在しない場所に値を挿入