sql >> Databasteknik >  >> RDS >> PostgreSQL

Bulk C#-datatabell till postgresql-tabell

PostgreSQL har definitivt en bulkkopia (det heter faktiskt copy ), och den har ett fint omslag för .NET. Om du laddar, vill du använda NpgsqlCopyIn , och om du extraherar data kan du använda NpgsqlCopyOut.

Din fråga är lite vag när det gäller detaljer -- jag känner inte till fälten i din datatabell eller något om din faktiska databas, så ta detta som ett kort exempel på hur man bulkinfogar data i en tabell med C#/PostgreSQL:

    NpgsqlCopyIn copy = new NpgsqlCopyIn("copy table1 from STDIN WITH NULL AS '' CSV;",
        conn);
    copy.Start();

    NpgsqlCopySerializer cs = new NpgsqlCopySerializer(conn);
    cs.Delimiter = ",";

    foreach (var record in RecordList)
    {
        cs.AddString(record.UserId);
        cs.AddInt32(record.Age);
        cs.AddDateTime(record.HireDate);
        cs.EndRow();
    }

    cs.Close();
    copy.End();

-- Redigera 27/8/2019 --

Konstruktionen för Npgsql har helt förändrats. Nedan finns en planlösning för samma exempel ovan, med binär import (text finns också):

using (var writer = conn.BeginBinaryImport(
    "copy user_data.part_list from STDIN (FORMAT BINARY)"))
{
    foreach (var record in RecordList)
    {
        writer.StartRow();
        writer.Write(record.UserId);
        writer.Write(record.Age, NpgsqlTypes.NpgsqlDbType.Integer);
        writer.Write(record.HireDate, NpgsqlTypes.NpgsqlDbType.Date);
    }

    writer.Complete();
}


  1. Hur man beräknar genomsnittlig försäljning per vecka i MySQL

  2. uppdatera poster med förberedda uttalanden, kontrollera om uppdateringen fungerade

  3. Rekursiv fråga i Oracle

  4. Hur kombinerar jag resultaten av två frågor med beställning?