PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Table de données en vrac C # vers la table postgresql

PostgreSQL a définitivement une copie en bloc (elle s'appelle en fait copy ), et il a un joli wrapper pour .NET. Si vous chargez, vous voulez utiliser le NpgsqlCopyIn , et si vous extrayez des données, vous pouvez utiliser NpgsqlCopyOut.

Votre question est un peu vague sur les détails - je ne connais pas les champs de votre table de données ou quoi que ce soit sur votre base de données réelle, alors prenez ceci comme un bref exemple sur la façon d'insérer en bloc des données dans une table en utilisant 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();

--Modifier 27/08/2019 --

La construction de Npgsql a complètement changé. Vous trouverez ci-dessous un passe-partout pour le même exemple ci-dessus, utilisant l'importation binaire (le texte est également 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();
}