public override void Insert() { var dataSource = DataSourceFilter.Elect(new RequestContext { DataSourceChoice = DataSourceChoice.Write }); var dbSession = SessionStore.GetOrAddDbSession(dataSource); dbSession.OpenConnection(); var conn = dbSession.Connection as MySqlConnection; MySqlBulkLoader bulkLoader = GetBulkLoader(conn); bulkLoader.Load(); }
public override async Task InsertAsync() { var dataSource = DataSourceFilter.Elect(new RequestContext { DataSourceChoice = DataSourceChoice.Write }); var dbSession = SessionStore.GetOrAddDbSession(dataSource); await dbSession.OpenConnectionAsync(); var conn = dbSession.Connection as SqlConnection; using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn)) { sqlBulkCopy.DestinationTableName = Table.Name; InitColumnMappings(); var dataTable = Table.ToDataTable(ColumnMappings); await sqlBulkCopy.WriteToServerAsync(dataTable); } }
public override void Insert() { var dataSource = DataSourceFilter.Elect(new RequestContext { DataSourceChoice = DataSourceChoice.Write }); var dbSession = SessionStore.GetOrAddDbSession(dataSource); dbSession.OpenConnection(); var conn = dbSession.Connection as NpgsqlConnection; InitColumnMappings(); var colNames = String.Join(",", ColumnMappings.Keys); var copyFromCommand = $"COPY {Table.Name} ({colNames}) FROM STDIN (FORMAT BINARY)"; using (var writer = conn.BeginBinaryImport(copyFromCommand)) { foreach (var row in Table.Rows) { writer.StartRow(); foreach (var mappingKey in ColumnMappings.Keys) { var colMapping = ColumnMappings[mappingKey]; var dbCellVal = row[colMapping.Column]; if (!String.IsNullOrEmpty(colMapping.DataTypeName)) { if (colMapping.DataTypeName.ToUpper() == "JSONB") { writer.Write(dbCellVal, NpgsqlTypes.NpgsqlDbType.Jsonb); } else { writer.Write(dbCellVal, colMapping.DataTypeName); } } else { writer.Write(dbCellVal); } } } writer.Complete(); } }