public void InsertValues() { using (var writer = connection.CreateColumnWriter($"INSERT INTO {TableName}(id, str) VALUES")) { var writeObject = new object[] { idEnumerable, strEnumerable }; writer.WriteTable(writeObject, valuesCount); writer.EndWrite(); } }
public void GlobalSetup() { GlobalCleanup(); var cmd = connection.CreateCommand($"CREATE TABLE {TableName}(id Int32, str Nullable(String)) ENGINE=Memory"); cmd.ExecuteNonQuery(); idEnumerable = Enumerable.Range(0, valuesCount); strEnumerable = idEnumerable.Select(x => x.ToString()); //Fill Table using (var writer = connection.CreateColumnWriter($"INSERT INTO {TableName}(id, str) VALUES")) { var writeObject = new object[] { idEnumerable, strEnumerable }; writer.WriteTable(writeObject, valuesCount); writer.EndWrite(); } }
public async Task WriteBatсhes() { await using var connection = new ClickHouseConnection(_connectionSettings); await connection.OpenAsync(); await using var writer = connection.CreateColumnWriter("INSERT INTO ColumnWriterInsertBenchmarks VALUES"); var id = new List <Guid>(BatchSize); var str = new List <string?>(BatchSize); var dt = new List <DateTime>(BatchSize); var val = new List <decimal>(BatchSize); var columns = new object[4]; columns[writer.GetOrdinal("id")] = id; columns[writer.GetOrdinal("str")] = str; columns[writer.GetOrdinal("dt")] = dt; columns[writer.GetOrdinal("val")] = val; for (int i = 0; i < Rows; i += BatchSize) { id.Clear(); str.Clear(); dt.Clear(); val.Clear(); var len = Math.Min(BatchSize, Rows - i); for (int j = 0; j < len; j++) { id.Add(_id[i + j]); str.Add(_str[i + j]); dt.Add(_dt[i + j]); val.Add(_val[i + j]); } await writer.WriteTableAsync(columns, len, CancellationToken.None); } await writer.EndWriteAsync(CancellationToken.None); }
public async Task InsertWithColumnWriter() { var id = new List <Guid>(1) { Guid.Empty }; var str = new List <string?>(1) { null }; var dt = new List <DateTime>(1) { DateTime.MinValue }; var val = new List <decimal>(1) { 0 }; if (KeepConnection) { await using var connection = new ClickHouseConnection(_connectionSettings); await connection.OpenAsync(); for (int i = 0; i < Rows; i++) { await using var writer = connection.CreateColumnWriter("INSERT INTO ColumnWriterInsertBenchmarks VALUES"); var columns = new object[4]; columns[writer.GetOrdinal("id")] = id; columns[writer.GetOrdinal("str")] = str; columns[writer.GetOrdinal("dt")] = dt; columns[writer.GetOrdinal("val")] = val; id[0] = _id[i]; str[0] = _str[i]; dt[0] = _dt[i]; val[0] = _val[i]; await writer.WriteTableAsync(columns, 1, CancellationToken.None); await writer.EndWriteAsync(CancellationToken.None); } } else { for (int i = 0; i < Rows; i++) { await using var connection = new ClickHouseConnection(_connectionSettings); await connection.OpenAsync(); await using var writer = connection.CreateColumnWriter("INSERT INTO ColumnWriterInsertBenchmarks VALUES"); var columns = new object[4]; columns[writer.GetOrdinal("id")] = id; columns[writer.GetOrdinal("str")] = str; columns[writer.GetOrdinal("dt")] = dt; columns[writer.GetOrdinal("val")] = val; id[0] = _id[i]; str[0] = _str[i]; dt[0] = _dt[i]; val[0] = _val[i]; await writer.WriteTableAsync(columns, 1, CancellationToken.None); //await writer.EndWriteAsync(CancellationToken.None); } } }