protected BulkCopyRowsCopied MultipleRowsCopy1 <T>( MultipleRowsHelper <T> helper, DataConnection dataConnection, BulkCopyOptions options, IEnumerable <T> source) { helper.StringBuilder .AppendFormat("INSERT INTO {0}", helper.TableName).AppendLine() .Append("("); foreach (var column in helper.Columns) { helper.StringBuilder .AppendLine() .Append("\t") .Append(helper.SqlBuilder.Convert(column.ColumnName, ConvertType.NameToQueryField)) .Append(","); } helper.StringBuilder.Length--; helper.StringBuilder .AppendLine() .Append(")"); helper.StringBuilder .AppendLine() .Append("VALUES"); helper.SetHeader(); foreach (var item in source) { helper.StringBuilder .AppendLine() .Append("("); helper.BuildColumns(item); helper.StringBuilder.Append("),"); helper.RowsCopied.RowsCopied++; helper.CurrentCount++; if (helper.CurrentCount >= helper.BatchSize || helper.Parameters.Count > 10000 || helper.StringBuilder.Length > 100000) { helper.StringBuilder.Length--; if (!helper.Execute()) { return(helper.RowsCopied); } } } if (helper.CurrentCount > 0) { helper.StringBuilder.Length--; helper.Execute(); } return(helper.RowsCopied); }
protected BulkCopyRowsCopied MultipleRowsCopy3 <T>(DataConnection dataConnection, BulkCopyOptions options, IEnumerable <T> source, string from) { var helper = new MultipleRowsHelper <T>(dataConnection, options, false); helper.StringBuilder .AppendFormat("INSERT INTO {0}", helper.TableName).AppendLine() .Append("("); foreach (var column in helper.Columns) { helper.StringBuilder .AppendLine() .Append("\t") .Append(helper.SqlBuilder.Convert(column.ColumnName, ConvertType.NameToQueryField)) .Append(","); } helper.StringBuilder.Length--; helper.StringBuilder .AppendLine() .AppendLine(")") .AppendLine("SELECT * FROM") .Append("("); helper.SetHeader(); foreach (var item in source) { helper.StringBuilder .AppendLine() .Append("\tSELECT "); helper.BuildColumns(item); helper.StringBuilder.Append(from); helper.StringBuilder.Append(" UNION ALL"); helper.RowsCopied.RowsCopied++; helper.CurrentCount++; if (helper.CurrentCount >= helper.BatchSize || helper.Parameters.Count > 10000 || helper.StringBuilder.Length > 100000) { helper.StringBuilder.Length -= " UNION ALL".Length; helper.StringBuilder .AppendLine() .Append(")"); if (!helper.Execute()) { return(helper.RowsCopied); } } } if (helper.CurrentCount > 0) { helper.StringBuilder.Length -= " UNION ALL".Length; helper.StringBuilder .AppendLine() .Append(")"); helper.Execute(); } return(helper.RowsCopied); }