我正在阅读SQLBulkCopy
并希望使用它将数千行从Excel文档导入到SQL Server。我一直在阅读直接做文章而不修改数据的文章。在执行SQLBulkCopy
之前,我需要对Excel文档中的数据进行一些修改和验证。是否有可能做到这一点?我会从过载中假设我可以修改数据并创建一个大的DataTable
,并用WriteToServer
导入DataTable
。将Excel批量复制到SQL Server,但有数据修改
0
A
回答
1
您可能需要一个DataReader或DataSet,您可以在导入之前对其进行迭代以进行验证/修改。
此实用工具可以帮助你 - http://exceldatareader.codeplex.com/
0
这对我工作得很好:
public ActionResult Create(HttpPostedFileBase file)
{
string strConnection = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
//file upload path
var fileName = Path.GetFileName(file.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
//Create connection string to Excel work book
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
excelConnection.Open();
DataTable dt = new DataTable();
dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return null;
}
String[] excelSheets = new String[dt.Rows.Count];
int t = 0;
//excel data saves in temp file here.
foreach (DataRow row in dt.Rows)
{
excelSheets[t] = row["TABLE_NAME"].ToString();
t++;
}
OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);
string query = string.Format("SELECT * FROM [{0}]", excelSheets[0]);
OleDbCommand cmd = new OleDbCommand(query, excelConnection);
//excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
//Give your Destination table name
sqlBulk.DestinationTableName = "[FSM].[DFS_Akustik]";
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
ViewBag.view_dfs_akustik = dbman.View_DFS_Akustik.ToList();
return View();
}
相关问题
- 1. 批量复制到SQL Server 2005中
- 2. 从SQL Server到Oracle的批量复制
- 3. 将所有表从SQL Server 2008批量复制到Amazon RDS上的sql server express
- 4. 将多个Excel文件批量复制到数据库中
- 5. 将数据从sqlite复制到SQL Server
- 6. 将数据从SQL Server复制到Oracle
- 7. 如何将类似数据批量复制到SQL Server 2005中的两个表?
- 8. 批量从Excel插入到SQL Server中
- 9. 将SQL Server 2005数据复制到2008但不是排序
- 10. Python:批量插入数据到SQL Server
- 11. XML数据和SQL批量复制
- 12. 将SQL Server 2000数据库复制到SQL Server 2008时出错
- 13. 将Excel数据插入到SQL Server表的批处理文件
- 14. 将大量数据从SQL Server复制到MySQL
- 15. 如何将复杂对象批量插入SQL Server数据库
- 16. SQL Server - 从Server 2008将数据库复制到Server 2012
- 17. 将C#批量复制到PostgreSql
- 18. 将SQL Server数据导出到Excel
- 19. 将Excel数据导入到SQL Server
- 20. 将数据从Excel迁移到SQL Server
- 21. 将数据从访问复制到现有的SQL Server表
- 22. SQL Server中从一列到另一列的数据批量复制
- 23. sql server批量复制/ postgres从infile复制
- 24. 如何使用node.js将数据批量插入到SQL Server中
- 25. 将SQLite数据库文件批量加载到SQL Server中
- 26. 将xml数据批量导入到sql server
- 27. 将记录批量插入到SQL Server数据库中
- 28. visual basic 2010,使用批量复制将excel文件导入到我的SQL
- 29. 将数据从数据表复制到SQL Server
- 30. 将SQL Server数据库复制到另一个数据库
所以它看起来是有可能导入之前做的文件验证。 – 2012-01-11 18:38:28
是的,我自己使用自己的DataSet提供程序完成了这个工作,尽管这个工具应该可以让它更容易。验证之后,您可以使用相同的DataSet表执行导入,也可以使用单独的SqlBulkCopy直接处理文件。 – PinnyM 2012-01-11 18:46:15
谢谢。如果大容量插入失败,那么没有办法找出哪一行发生错误? – 2012-01-11 18:49:22