vb.net - OleDB 不保存对大型 xlsx 文件的更改
问题描述
我正在使用 OleDB 对一个大的 xlsx 文件(大约 170k 行)执行大量插入。出于某种原因,每次查询后文件都没有改变,所以我一次将操作分成大约 1700 次插入的块,因此现在需要 100 次操作才能完成该过程。
每次批量插入后,我都会关闭连接并再次打开它以提交更改。但是,在第 28 次批量插入之后,OleDB 停止提交更改。内存中的操作存在(如果我查询应该插入多少行与实际插入了多少行,一切似乎都很好);但是,一旦连接关闭,文件实际上并没有更新,并且过程会静默失败 - 不会引发任何错误。我找不到很多关于这种行为的文档,有没有人遇到过类似的错误?
必须使用 OleDB 和大 xlsx 文件;我知道这很糟糕,但这不是我的选择,我对此无能为力。感谢大家可能提供的任何帮助。
现在的代码
moConnection = New OLEDBConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""C:\something\something.xlsx"";Extended Properties=""Excel 12.0 Xml;HDR=YES""")
moConnection.Open();
Dim oCommand As New OleDbCommand("INSERT INTO [table$] SELECT * FROM [anotherTable$] WHERE [stato] LIKE '%INVIATO%'", moConnection)
oCommand.ExecuteNonQuery()
moConnection.Close()
moConnection.Dispose()
将批量插入拆分为更小的块是通过 id 上的附加 WHERE 子句来实现的,以仅获取内容的子集。
解决方案
推荐阅读
- c# - 如何适当地反序列化动态 JSON?
- javascript - 将表名传递给 Javascript 文档获取元素 ID 函数
- python - 我的代码不接受字符串,它正在检查错误的变量
- python - TCP SocketServer 只接受没有 AF_INET 和 SOCK_DGRAM 传入客户端的连接
- r - 通过在 id 列后插入空格来写出数据集
- node.js - 如何在 Cloud Functions 中使用 Firebase 远程配置?
- html - 某些(移动)设备上出现奇怪的白条
- android - fontFamily 属性无法通过 textAppearance 工作
- security - 如何在 Intranet 中处理需要安全上下文的 Web 应用程序?
- arrays - 将 foreach 循环输出存储到数组