sql - 使用 VBA 上传数百条记录
问题描述
我需要将大量记录从 excel 上传到 msaccess。我目前正在做的是,我在 VBA 中创建了一个“INSERT INTO”sql 查询,并用实际值遍历我的数据表。像这样的东西
for i=1 to NumberOfRecords
Sql=Insert Into Table, cell Field, Values(cell(i,1)
next
当我遇到性能问题时,我想知道是否有更有效的方法来使用 sql。谢谢
解决方案
考虑一个由 Jet/ACE SQL 引擎支持的直接 Excel 查询。下面假设 Excel 工作表是带有命名标题的表格格式,并以A1
单元格开头。在下面保存或运行为 Access 查询。当然,调整所有列、Excel 工作簿路径和工作表名称。
INSERT INTO myTable (Col1, Col2, Col3, ...)
SELECT t.Col1, Col2, Col3, ...
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\Workbook.xlsx].[Sheet1$] t
对于不是从最左上角A1
单元格开始且没有标题的 Excel 数据,请考虑以下查询,该查询从工作表范围中选择数据:B100:Z450
。确保列出的表格列与无名标题的 Excel 数据中的数据类型一一匹配。
INSERT INTO myTable (Col1, Col2, Col3, ...)
SELECT *
FROM [Excel 12.0 Xml;HDR=No;Database=C:\Path\To\Excel\Workbook.xlsx].[Sheet1$B100:Z450] t
要调试始终SELECT
在完全追加查询之前运行查询部分。
推荐阅读
- apache-kafka - Kafka Streams 应用程序重置工具不起作用,并且无法将主题偏移量重置为 0
- javascript - Javascript 存储 DOM HTML 元素参考
- node.js - NodeJS / 将所有请求表达到特定路径
- tfs - VSTS 身份验证中带有 accesstoken 凭据的 VssClientCredentials
- android - Gradle 版本冲突
- reactjs - 带有 react 和 material-ui 的 Asp.Net Core
- angularjs - 自动对焦不适用于 AngularAgility
- java - 消息卡在 activemq 队列中
- java - 通过程序删除文件的警告消息
- django - 如何使用 form.cleaned_data django