【发布时间】:2016-10-31 13:38:15
【问题描述】:
我想使用 sql 批量复制将数据从 *.xlsx 文件加载到数据库。但是,当文件大小超过大约 1mb 时,我遇到了这个问题。当我尝试打开 OleDbConnection 时出现错误
No error message available, result code: E_FAIL(0x80004005)
有人知道这种行为吗?
附:如果文件大小小于上面提到的,一切都会按预期工作。
string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0 Xml;";
// Create the connection object
OleDbConnection oledbConn = new OleDbConnection(connString);
// Open connection
oledbConn.Open();
// Create OleDbCommand object and select data from worksheet
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + WorkSheetName + "$" + DataRange + "]", oledbConn);
OleDbDataReader dr = cmd.ExecuteReader();
string ProfDbBulkCopyConnString = ConfigurationManager.ConnectionStrings["DbBulkCopyConnString"].ToString();
SqlBulkCopy sb = new SqlBulkCopy(ProfDbBulkCopyConnString);
sb.ColumnMappings.Add("Status", "ActionStatus");
sb.ColumnMappings.Add("Process", "ProcessExec");
sb.DestinationTableName = "dba.Execute";
sb.WriteToServer(dr);
【问题讨论】:
-
也许您用来执行此操作的源代码可能会有所帮助...并在提出下一个问题之前阅读How to Ask。
-
@Chomel 在这里。希望没有什么令人困惑的地方。
-
现在我们得到更多信息!
-
你的路径字符串中有空格吗?
-
@Bridge 该字符串的发布方式与代码中的内容完全相同。这似乎是正确的。不是吗?我倾向于认为问题与驱动程序有关,但我无法找出确切的原因。