sql >> Database teknologi >  >> RDS >> PostgreSQL

Bulk C#-datatabel til postgresql-tabel

PostgreSQL har bestemt en massekopi (det hedder faktisk copy ), og den har en fin indpakning til .NET. Hvis du indlæser, vil du bruge NpgsqlCopyIn , og hvis du udtrækker data, kan du bruge NpgsqlCopyOut.

Dit spørgsmål er lidt vagt med hensyn til detaljer -- jeg kender ikke felterne i din datatabel eller noget om din faktiske database, så tag dette som et kort eksempel på, hvordan man masseindsætter data i en tabel ved hjælp af 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();

-- Rediger 27/8/2019 --

Konstruktionen til Npgsql er fuldstændig ændret. Nedenfor er en kedelplade for det samme eksempel ovenfor, ved hjælp af binær import (tekst er også tilgængelig):

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. grupper efter og bestil efter i mysql-forespørgsel

  2. Sådan hentes data fra MySQL-databasen til Excel

  3. Arabiske tekster i php/mysql vises nogle gange "???" og engang vises Ùؤتا efter select/insert statement

  4. Hurtig opdeling af partitionering