我正在使用此方法将数据上传到SQL。
private void button5_Click(object sender, EventArgs e)
{
string filepath = textBox2.Text;
string connectionString_i = string.Format(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""", Path.GetDirectoryName(filepath));
using (OleDbConnection connection_i = new OleDbConnection(connectionString_i))
{
connection_i.Open();
OleDbCommand command = new OleDbCommand ("Select * FROM [" + Path.GetFileName(filepath) +"]", connection_i);
command.CommandTimeout = 180;
using (OleDbDataReader dr = command.ExecuteReader())
{
string sqlConnectionString = MyConString;
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
bulkInsert.BulkCopyTimeout = 180;
bulkInsert.DestinationTableName = "Table_Name";
bulkInsert.WriteToServer(dr);
MessageBox.Show("Upload Successful!");
}
}
connection_i.Close();
}
}
我有.CSV
格式的Excel表格,大约1,048,313个条目。该批量复制方法仅适用于大约36000到60000个条目。我想询问是否有任何方法可以从Excel中选择前30000个条目并将它们上传到SQL Server表,然后再次选择30000行的下一个块并将其上传到SQL Server,依此类推,直到最后一个条目已存储。
答案 0 :(得分:1)
这种技术比批量复制具有一些战术优势,因为它增加了灵活性并且与目标表的耦合较少,因此根据变化的性质,对表的更改可能会更不易变。