sql >> Databáze >  >> RDS >> PostgreSQL

Hromadné datové tabulky C# do tabulky postgresql

PostgreSQL rozhodně má hromadnou kopii (ve skutečnosti se nazývá copy ) a má pěkný obal pro .NET. Pokud načítáte, chcete použít NpgsqlCopyIn a pokud extrahujete data, můžete použít NpgsqlCopyOut.

Vaše otázka je v detailech trochu vágní – neznám pole ve vaší datové tabulce ani nic o vaší skutečné databázi, takže to berte jako stručný příklad hromadného vkládání dat do tabulky pomocí 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();

-- Upravit 27. 8. 2019 --

Konstrukce pro Npgsql se zcela změnila. Níže je uveden popis stejného příkladu výše s použitím binárního importu (k dispozici je také text):

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. Jak vypsat všechny uživatele v PostgreSQL

  2. Spojení stolů pomocí cizích klíčů

  3. Android Studio nekontroluje/nezvýrazní dotazy Kotlin Room DAO, když řetězec zabírá více než 1 řádek

  4. Získávání trasování zásobníku chyb MySQL na Oracle JDBC Connection