PostgreSQL chắc chắn có một bản sao hàng loạt (nó thực sự được gọi là copy
), và nó có một trình bao bọc đẹp cho .NET. Nếu bạn đang tải, bạn muốn sử dụng NpgsqlCopyIn
và nếu bạn đang giải nén dữ liệu, bạn có thể sử dụng NpgsqlCopyOut.
Câu hỏi của bạn hơi mơ hồ về chi tiết - Tôi không biết các trường trong cơ sở dữ liệu của bạn hoặc bất cứ điều gì về cơ sở dữ liệu thực tế của bạn, vì vậy hãy lấy đây làm ví dụ ngắn gọn về cách chèn hàng loạt dữ liệu vào bảng bằng 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();
- Chỉnh sửa 27/8/2019 -
Cấu trúc cho Npgsql đã hoàn toàn thay đổi. Dưới đây là bảng soạn sẵn cho ví dụ tương tự ở trên, sử dụng nhập nhị phân (văn bản cũng có sẵn):
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();
}