Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wprowadź dużą zawartość do bazy danych Oracle

Najprostszym sposobem jest użycie zmiennej bind. Oto podstawowy przykład:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL:Błąd PLS-00306:nieprawidłowa liczba lub typy argumentów w wywołaniu wywołanym dla tabeli liczb

  2. Jak sprawdzić, czy baza danych Oracle obsługuje autoinkrementację?

  3. Jak wprowadzać znaki specjalne, takie jak &w bazie danych Oracle?

  4. Zapytanie sparametryzowane Oracle w c#

  5. INSERT Performance - Bitmapa vs B-Tree