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
        }
    }
}