mysql - VBScript 在同一代码中使用两个 For Next
问题描述
我需要在 MySQL 表中插入六个 txt 文件。我想将文件txt10.txt
插入表 D1,将文件txt20.txt
插入表 D2,将文件txt30.txt
插入表 D3,等等。但是所有文本文件都插入到所有 MySQL 表中。
我的代码如下:
Arr1 = Array("txt10", "txt20", "txt30", "txt40", "txt50", "txt60")
Arr2 = Array("D1", "D2", "D3", "D4", "D5", "D6")
For K = 0 To UBound(Arr1)
For I = 0 To UBound(Arr2)
SQL = " FLUSH TABLE `tbl_" & Arr2(I) & "_" & Year(Date()) & "`; "
cn.Execute(SQL)
SQL = " LOAD DATA LOCAL INFILE 'D:\\nOpen\\" & Arr1(K) & ".txt' "
SQL = SQL & " INTO TABLE `tbl_" & Arr2(I) & "_" & Year(Date()) & "` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
cn.Execute(SQL)
Next
Next
编辑#1
在您的代码中,我有错误:
数组索引超出范围
在这条线上:
tbl = Arr2(n)
新代码:
Arr1 = Array("txt10", "txt20", "txt30", "txt40", "txt50", "txt60")
Arr2 = Array("D1", "D2", "D3", "D4", "D5", "D6")
For n=0 To UBound(Arr1)
txt = Arr1(n)
tbl = Arr2(n)
SQL = " FLUSH TABLE `tbl_" & tbl & "_" & Year(Date()) & "`; "
cn.Execute(SQL)
SQL = " LOAD DATA LOCAL INFILE 'D:\\nOpen\\" & txt & ".txt' "
SQL = SQL & " INTO TABLE `tbl_" & tbl & "_" & Year(Date()) & "` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;"
cn.Execute(SQL)
Next
解决方案
嗯,是。以您的方式运行两个For
循环将为您提供两个输入数组元素的所有可能组合。
您真正想要的是使用单个循环并选择每个数组的相应元素:
For n=0 To UBound(Arr1)
txt = Arr1(n)
tbl = Arr2(n)
'now insert txt into tbl
Next
或者,您可以构建文件到表的映射(反之亦然),这样您就不必依赖两个数组的大小相同:
Set map = CreateObject("Scripting.Dictionary")
map.Add "txt10", "D1"
map.Add "txt20", "D2"
...
For Each txt In map.Keys
tbl = map(txt)
'now insert txt into tbl
Next
推荐阅读
- python - 在纯 python 脚本/无限任务中使用 Django ORM
- java - 如何将 PHP 对象数组作为 Java/SOAP 服务的参数传递?
- java - 如何使用spring批处理从表中获取ID字段
- javascript - 为有孩子的对象生成表格行
- ios - 如何在 Windows 10 上将应用程序发布到应用商店颤振
- python - 不理解这个 Python 脚本
- google-sheets - 如何从谷歌表格的另一张表格中查看 sumif 语句中引用了哪些单元格?
- laravel - 在 Beanstalk 上扩展 Nginx 配置不会正确重写 url
- c# - 是否可以为 Visual Studio 代码段替换参数定义 Tab 键顺序?
- amazon-web-services - 监控 AWS EC2 的内存使用情况