sql >> Base de Datos >  >> RDS >> PostgreSQL

Tabla de datos masiva de C# a la tabla postgresql

PostgreSQL definitivamente tiene una copia masiva (en realidad se llama copy ), y tiene un buen envoltorio para .NET. Si está cargando, desea utilizar NpgsqlCopyIn , y si está extrayendo datos, puede usar NpgsqlCopyOut.

Su pregunta es un poco vaga en los detalles:no conozco los campos en su tabla de datos ni nada sobre su base de datos real, así que tome esto como un breve ejemplo sobre cómo insertar datos en masa en una tabla usando 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();

-- Editar 27/8/2019 --

La construcción de Npgsql ha cambiado por completo. A continuación se muestra un modelo para el mismo ejemplo anterior, utilizando la importación binaria (el texto también está disponible):

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();
}