gpt4 book ai didi

excel - 将 Excel 表数据传输到 SQL 2008R2 的最快方法

转载 作者:行者123 更新时间:2023-12-01 19:58:31 24 4
gpt4 key购买 nike

有人知道在不使用外部实用程序(即 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 很慢,但比方法 1 或 2 更快。

方法 4. 将表放入 VBA 数组中,循环遍历数组并连接(使用分隔符),然后使用 ADO recordset .addnew 命令放置每一行。--发送到 SQL 的速度非常快(大约比方法 1-3 快 20 倍),但现在我需要使用单独的过程来拆分该数据,这将增加大量的等待时间。

方法 5. 将表放入 VBA 数组中,序列化为 XML,以 VARCHAR 形式发送到存储过程,并在存储过程中指定 XML。--发送到 SQL 极其缓慢(比方法 1 或 2 慢大约 100 倍)

我缺少什么吗?

最佳答案

没有单一最快的方法,因为它取决于许多因素。确保 SQL 中的索引已配置和优化。大量索引会降低插入/更新性能,因为每次插入都需要更新索引。确保只与数据库建立一个连接,并且在操作过程中不要打开/关闭它。当服务器负载最小时运行更新。您还没有尝试过的唯一其他方法是使用 ADO Command 对象,并发出直接 INSERT 语句。当使用记录集对象的“AddNew”方法时,请确保在插入结束时仅发出一个“UpdateBatch”命令。除此之外,VBA 的运行速度只能与 SQL 服务器接受输入的速度一样快。

编辑:看来你已经尝试了一切。 SQL Server 中还有所谓的“批量日志”恢复模式,可减少向事务日志写入大量内容的开销。可能是值得研究的东西。这可能会很麻烦,因为它需要稍微摆弄数据库恢复模型,但它可能对您有用。

关于excel - 将 Excel 表数据传输到 SQL 2008R2 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com