Skip to content

Commit e12c62f

Browse files
committed
optimize MySql.BatchInsert AutoIncrement
1 parent d8d6397 commit e12c62f

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

src/SmartSql.Batch.MySql/BatchInsert.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,17 @@ private string ToCSV()
6565
var colMapping = colMappingKey.Value;
6666
var col = Table.Columns[colMapping.Column];
6767
if (colIndex != 0) dataBuilder.Append(_fieldTerminator);
68-
if (col.DataType == typeof(string)
69-
&& row[col.Name] != null
68+
if (col.DataType == typeof(string)
69+
&& row[col.Name] != null
7070
&& row[col.Name].ToString().Contains(_fieldTerminator))
7171
{
7272
dataBuilder.AppendFormat("\"{0}\"", row[col.Name].ToString().Replace("\"", "\"\""));
7373
}
74-
else dataBuilder.Append(row[col.Name]?.ToString());
74+
else
75+
{
76+
var colValStr = (col.AutoIncrement.HasValue && col.AutoIncrement.Value) ? "" : row[col.Name]?.ToString();
77+
dataBuilder.Append(colValStr);
78+
}
7579
colIndex++;
7680
}
7781
dataBuilder.Append(_lineTerminator);

src/SmartSql.UTests/Batch/MySql.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ public void Insert()
2121
{
2222
var batchInsertNum = 1000000;
2323
var batchTable = new DbTable("t_test");
24-
batchTable.AddColumn("id");
24+
batchTable.AddColumn(new DbColumn
25+
{
26+
AutoIncrement = true,
27+
DataType = typeof(long),
28+
Name = "id"
29+
});
2530
batchTable.AddColumn("name");
2631
batchTable.AddColumn("no");
2732
for (var i = 0; i < batchInsertNum; i++)
@@ -41,7 +46,12 @@ public async Task InsertAsync()
4146
{
4247
var batchInsertNum = 1000000;
4348
var batchTable = new DbTable("t_test");
44-
batchTable.AddColumn("id");
49+
batchTable.AddColumn(new DbColumn
50+
{
51+
AutoIncrement = true,
52+
DataType = typeof(long),
53+
Name = "id"
54+
});
4555
batchTable.AddColumn("name");
4656
batchTable.AddColumn("no");
4757
for (var i = 0; i < batchInsertNum; i++)

src/SmartSql.UTests/SmartSqlMapConfig-MySql.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
<Database>
55
<!--ParameterPrefix:[SqlServer:@ | MySQL:? |Oracle::] -->
66
<DbProvider Name="MySqlClientFactory" ParameterPrefix="?" Type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data"/>
7-
<Write Name="WriteDB" ConnectionString="Data Source=localhost;database=SmartSqlStarterDB;uid=root;pwd=SmartSql.Net;CharSet=utf8;SslMode=None;Allow User Variables=True"/>
7+
<Write Name="WriteDB" ConnectionString="Data Source=localhost;database=SmartSqlStarterDB;uid=root;pwd=SmartSql.Net;CharSet=utf8;SslMode=None;"/>
88
</Database>
99

1010
<TypeHandlers>
1111
<TypeHandler Name="Json" Type="SmartSql.TypeHandler.JsonTypeHandler,SmartSql.TypeHandler"/>
1212
<TypeHandler Name="Xml" Type="SmartSql.TypeHandler.XmlTypeHandler,SmartSql.TypeHandler"/>
1313
</TypeHandlers>
14-
15-
</SmartSqlMapConfig>
14+
</SmartSqlMapConfig>

0 commit comments

Comments
 (0)