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

Oracleデータベースに大きなコンテンツを入力する

    最も簡単な方法は、バインド変数を使用することです。基本的な例は次のとおりです。

    CREATE TABLE clob_table (val CLOB);
    
    void Main()
    {
        using (var connection = new OracleConnection("DATA SOURCE=hq_pdb_tcp;PASSWORD=oracle;USER ID=HUSQVIK"))
        {
            using (var transaction = new TransactionScope())
            {
                connection.Open();
    
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "INSERT INTO clob_table (val) VALUES (EMPTY_CLOB()) RETURNING val INTO :clob";
                    var parameter = command.Parameters.Add("clob", OracleDbType.Clob, ParameterDirection.Output);
    
                    command.ExecuteNonQuery();
    
                    var clob = (OracleClob)parameter.Value;
    
                    ChunkFile(@"LargeTextFile.txt", 8060, (b, l) => clob.Append(b, 0, l));
                }
    
                transaction.Complete();
            }
        }
    }
    
    private void ChunkFile(string fileName, int chunkSize, Action<char[], int> chunkAction)
    {
        using (var stream = File.OpenText(fileName))
        {
            do
            {
                var buffer = new char[chunkSize];
                var length = stream.Read(buffer, 0, chunkSize);
                if (length == 0)
                    return;
    
                chunkAction(buffer, length);
            }
            while (true);
        }
    }
    


    1. Cakephp 3.0は、2つの列の値を1つとして取得します

    2. RailsアプリをHerokuにプッシュする/「pg」gemをインストールするのに問題がありますか?

    3. C#/NHibernate-グループ化された合計で並べ替えられた最初の10レコードを取得します

    4. ローカルIISではOracleORA-12154エラーが発生しますが、Visual StudioDevelopmentServerではエラーが発生しません