PostgreSQL определено има групово копие (то всъщност се нарича copy
), и има хубава обвивка за .NET. Ако зареждате, искате да използвате NpgsqlCopyIn
, а ако извличате данни, можете да използвате NpgsqlCopyOut.
Въпросът ви е малко неясен по отношение на подробностите -- не знам полетата във вашата таблица с данни или нищо за действителната ви база данни, така че приемете това като кратък пример за това как групово да вмъкнете данни в таблица с помощта на 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();
-- Редактиране на 27.08.2019 г. --
Конструкцията за Npgsql е напълно променена. По-долу е даден шаблон за същия пример по-горе, използващ двоично импортиране (наличен е и текст):
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();
}