public override bool BulkInsert(DbTable schema, MungedDataReader reader) { using (var cn = _getConnection()) { using (SqlBulkCopy copy = new SqlBulkCopy(cn)) { //copy.ColumnMappings = new SqlBulkCopyColumnMappingCollection(); for (var i = 0; i < reader.ColumnNames.Length; i++) { var column = reader.ColumnNames[i]; var sourceOrdinal = i; var destinationOrdinal = schema.Columns.FindIndex(x => x.Name == column); if (destinationOrdinal == -1) { var msg = string.Format("Unable to resolve column mapping, column: {0} was not found in destination table {1}", column, _table ); throw new Exception(msg); } copy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(i, destinationOrdinal)); } copy.DestinationTableName = string.Format("[{0}].[{1}]", _schema, _table); copy.BatchSize = 1000; copy.BulkCopyTimeout = 9999999; copy.WriteToServer(reader); } } return true; }
public DbTable(string tableName, MungedDataReader reader) { Name = tableName; Columns = new List<DbColumn>(); for (var i = 0; i < reader.ColumnNames.Length; i++) { var type = reader.ColumnTypes[i]; var name = reader.ColumnNames[i]; var c = new DbColumn(name, type); Columns.Add(c); } }
public DbTable(string tableName, MungedDataReader reader) { Name = tableName; Columns = new List <DbColumn>(); for (var i = 0; i < reader.ColumnNames.Length; i++) { var type = reader.ColumnTypes[i]; var name = reader.ColumnNames[i]; var c = new DbColumn(name, type); Columns.Add(c); } }
public bool Execute() { using (var stream = File.OpenText(_filename)) { using (var reader = new MungedDataReader(stream)) { var currentSchema = new DbTable(_table, reader); var oldSchema = GetDbSchema(); // Check / Update the schema in the DB if (oldSchema == null) { CreateTable(currentSchema); } else { ModifySchema(oldSchema, currentSchema); } var newSchema = GetDbSchema(); BulkInsert(newSchema, reader); } } return true; }
public abstract bool BulkInsert(DbTable schema, MungedDataReader reader);