【发布时间】:2012-05-29 07:13:21
【问题描述】:
有没有人知道使用外部实用程序(即 bcp)从 Excel 表(VBA 数组)获取数据到 SQL 2008 上表的最快方法? 请记住,我的数据集通常是 6500-15000 行,大约 150-250 列;我最终在自动 VBA 批处理脚本中传输了大约 20-150 个。
我尝试了几种方法将大量数据从 Excel 表 (VBA) 获取到 SQL 2008。我在下面列出了这些方法:
方法 1. 将表传入 VBA 数组并发送到存储过程 (ADO) -- 发送到 SQL 很慢
方法2. 创建断开连接的RecordSet 加载它,然后同步。 -- 发送到 SQL 非常慢
方法 3. 将表放入 VBA 数组,循环遍历数组并连接(使用分隔符)然后发送到存储过程。 -- 发送到 SQL SLOW,但比方法 1 或 2 快。
方法 4. 将表放入 VBA 数组,循环遍历数组并连接(使用分隔符),然后使用 ADO 记录集 .addnew 命令放置每一行。 -- 发送到 SQL 的速度非常快(比方法 1-3 快大约 20 倍),但现在我需要使用单独的过程拆分该数据,这将增加大量等待时间。
方法5. 将表放入VBA数组,序列化成XML,以VARCHAR形式发送到存储过程,并在存储过程中指定XML。 -- 发送到 SQL 非常慢(比方法 1 或 2 慢大约 100 倍)
我缺少什么吗?
【问题讨论】:
标签: excel vba sql-server-2008 import large-data