有时候我们在导入数据的时候需要一次导入大量的数据,一次执行一条SQL发现很慢。后来采用1000条小sql拼成一个sql执行那是相当的快。
如下:
insert into A(,x,y )select 1,1 from dual union select 2,2 union select 3,3.....union select 1000,1000
.net 代码如下,注意用事务来保证数据一致性:
using (conn = context.NewConnection())
{
conn.Open();
trans = conn.BeginTransaction(); //开始事务
foreach (var sql in sqlList)
{
IDbCommand cmd = CreateCommand(sql,null, context);
sqlStatement += sqlStatement == string.Empty ? cmd.CommandText : "\r\n" + cmd.CommandText;
cmd.Connection = conn;
cmd.Transaction = trans;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
}
trans.Commit();
}
注意:Informix 版本对SQL的最大长度有限制,可能不能拼装1000条。