c# - SQLBulkCopy slower than expected -
it's taking around 5 minutes per million records, wondering if expected speed.
i wondering if batch size small i.e. 500 ?
my current code looks this...
using (var destinationconnection = new sqlconnection(settings.default.batchoutputconnectionstring)) { var tablename = mergedfilename.substring(0, mergedfilename.indexof('.')); destinationconnection.open(); try { using (var createanddroptablecommand = new sqlcommand("sp_dropandcreatetable", destinationconnection)) { createanddroptablecommand.commandtype = commandtype.storedprocedure; createanddroptablecommand.parameters.add("@tabletocreate", sqldbtype.varchar).value = tablename; createanddroptablecommand.executenonquery(); } foreach (var file in txtfiles) { using (var lineiterator = file.readlines(file).getenumerator()) { while (lineiterator.movenext()) { var line = lineiterator.current; var datacolumns = line.split('\t'); var dr = dt.newrow(); (var = 0; < datacolumns.length; i++) { dr[i] = datacolumns[i].trim().length == 0 ? null : datacolumns[i]; } dt.rows.add(dr); recordcounter++; } using (var bulkcopy = new sqlbulkcopy(destinationconnection)) { bulkcopy.destinationtablename = "dbo." + tablename; bulkcopy.batchsize = 500; bulkcopy.columnmappings.clear(); foreach (datacolumn col in dt.columns) { bulkcopy.columnmappings.add(new sqlbulkcopycolumnmapping(col.columnname, col.columnname)); } bulkcopy.writetoserver(dt); } dt.clear(); } } } { destinationconnection.close(); } }
Comments
Post a Comment