public async Task BulkInsertAsync(string tableName, IEnumerable data, int batchSize = 1000)
{
int totalRowsAffected = 0;
var batches = data.Batch(batchSize);
foreach (var batch in batches)
{
string connstring = "connection string";
using SnowflakeDbConnection conn = new SnowflakeDbConnection();
conn.ConnectionString = connstring;
conn.Open();
using var transaction = conn.BeginTransaction();
try
{
var dataTable = batch.ToDataTable();
var sql = GenerateBulkInsertSql(tableName, dataTable);
var rowsAffected = await conn.ExecuteAsync(sql, dataTable, transaction: transaction);
transaction.Commit();
totalRowsAffected += rowsAffected;
}
catch
{
transaction.Rollback();
throw;
}
}
return totalRowsAffected;
}
private string GenerateBulkInsertSql(string tableName, DataTable dataTable)
{
var columns = string.Join(", ", dataTable.Columns.Cast().Select(c => c.ColumnName));
var values = string.Join(", ", dataTable.Columns.Cast().Select(c => ":" + c.ColumnName));
return $"INSERT INTO {tableName} ({columns}) VALUES ({values})";
}
public static DataTable ToDataTable(this IEnumerable data)
{
var dataTable = new DataTable();
var properties = typeof(T).GetProperties();
foreach (var prop in properties)
{
dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
}
foreach (var item in data)
{
var row = dataTable.NewRow();
foreach (var prop in properties)
{
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
}
dataTable.Rows.Add(row);
}
return dataTable;
}
Кто-нибудь может помочь с выполнением операций BulkInsert и BulkUpdate в таблицах Snowflake с использованием Dapper и C#. Я сталкиваюсь с проблемами, из-за которых значения не вставляются в таблицы Snowflake. Любая помощь будет принята с благодарностью. Заранее спасибо!
foreach (var item in data) { var row = dataTable.NewRow(); foreach (var prop in properties) { row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; } dataTable.Rows.Add(row); }
return dataTable; } [/code] Кто-нибудь может помочь с выполнением операций BulkInsert и BulkUpdate в таблицах Snowflake с использованием Dapper и C#. Я сталкиваюсь с проблемами, из-за которых значения не вставляются в таблицы Snowflake. Любая помощь будет принята с благодарностью. Заранее спасибо!
public async Task BulkInsertAsync(string tableName, IEnumerable data, int batchSize = 1000)
{
int totalRowsAffected = 0;
var batches = data.Batch(batchSize);
Я разработчик C#, пытающийся решить проблему с Python, пожалуйста, потерпите мои непитонические методы.
Я пытаюсь понять, как реализовать массовую вставку в сценарии отношений «многие ко многим» для создания сокращенной аналитической базы данных (на...
У меня есть следующая структура базы данных, в которой Студент и Курс связаны отношением многие-ко-многим в StudentCourseLinks. Мне нужно выполнить массовую вставку в StudentCourseLinks, где я вставляю новый CourseId для всех записей Student,...
У меня есть следующая структура базы данных, в которой Студент и Курс связаны отношением многие-ко-многим в StudentCourseLinks. Мне нужно выполнить массовую вставку в StudentCourseLinks, где я вставляю новый CourseId для всех записей Student,...
У меня есть следующая структура базы данных, в которой Студент и Курс связаны отношением многие-ко-многим в StudentCourseLinks. Мне нужно выполнить массовую вставку в StudentCourseLinks, где я вставляю новый CourseId для всех записей Student,...