gpt4 book ai didi

sql-server - 将范围从 Excel 复制到 SQL 而不使用 For 循环?

转载 作者:行者123 更新时间:2023-12-04 22:02:11 26 4
gpt4 key购买 nike

我想从我的 Excel 工作表复制一个范围(它可以是像 Set DataRange = ValidSheet.Range("C22:C81") 的一列或像 Set DataRange = ValidSheet.Range("C22:F81") 的多列)到 SQL 表。

但是,互联网上的一些示例建议使用 DataRange(i)作为一个数组,然后使用 For i = 1 to 59循环以逐个单元格复制每个值单元格,例如:

For i = 1 to 59
SQL = "INSERT INTO Table_test (Column1) VALUES (" & DataRange(i) & ")"
Next

有没有不使用循环一次复制整个范围的直接方法?

最佳答案

我建议使用循环 - 但改变策略 - 因为 INSERT 语句比 Excels 内部逻辑更密集并且可能减慢速度。

因此,我倾向于创建一个包含所有值的循环 - 一个接一个,例如:

For i = 1 to 59
if i = 1 then
SQL = "INSERT INTO Table_test (Column1) VALUES (" & DataRange(i) & "),"
elseif i < 59 then
SQL = SQL & " (" & DataRange(i) & "), "
else
SQL = SQL & " (" & DataRange(i) & ")"
End if
Next i

SQL.execute

这将创建一个包含所有值的大而丑陋的字符串,但不会花费很长时间 - 当然对于这么多的行。

但是,如果您执行的操作超过几千,则可以创建该范围的临时文本文件,并使用“从文件加载”进行导入——这比这些单独的运算符要快得多。

关于sql-server - 将范围从 Excel 复制到 SQL 而不使用 For 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32267396/

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