我正在尝试在MySQL表中插入大量数据。
由于性能问题,我正在填写List<string>
并使用此列表生成我的命令字符串,以便对我的所有行执行唯一插入。
这是我的代码:
StringBuilder cmdText = new StringBuilder("INSERT INTO my_Table (ColumnA, ColumnB) VALUES ");
List<string> aux = new List<string>();
using (MySqlConnection conn = new MySqlConnection(connString))
{
foreach (DataRow row in dataTable.Rows)
{
aux.Add(string.Format("('{0}','{1}')", row[0].ToString(), row[1].ToSTring()));
}
cmdText.Append(string.Join(",", aux));
cmdText.Append(";");
conn.Open();
using (MySqlCommand cmd = new MySqlCommand(cmdText.ToString(), conn))
{
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 0;
cmd.ExecuteNonQuery();
};
这样,我的cmdText的结果最终是这样的:
INSERT INTO my_Table (ColumnA, ColumnB) VALUES ('Value1','Value2') ('Value3','Value4') ...;
在相同的插入物中有大约500k行。
这一行中的一行或多行可以包含以&#39; @&#39;
开头的值我没有使用参数(&#39; @参数&#39;),但是当我执行我的应用程序时,
我收到这样的错误:
命令执行期间遇到致命错误。 &#34;参数&#39; @ GMAIL.COM&#39;必须定义。&#34;
@ gmail.com是一个值,而不是参数。但它仍被解释为@parameter。
任何人都知道如何表明这不是一个参数而是一个值?