using (var connection = HeroukoPostgresql) { var watch = System.Diagnostics.Stopwatch.StartNew(); connection.Open(); var trans = connection.BeginTransaction(); try { ExecuteNonQuery("TRUNCATE xxx", connection); const string query = "COPY xxx (a,b,c,d) FROM STDIN (FORMAT BINARY)"; using (var writer = connection.BeginBinaryImport(query)) { foreach (var price in prices) { writer.StartRow(); writer.Write(a, NpgsqlDbType.Integer); writer.Write(b, NpgsqlDbType.Date); writer.Write(c, NpgsqlDbType.Varchar); writer.Write(d, NpgsqlDbType.Numeric); } } trans.Commit(); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; } catch (Exception ex) { trans.Rollback(); Console.WriteLine("Error importing xxx : " + ex.Message); } finally { try { connection.Close(); } catch { // ignored } } }