【发布时间】:2013-11-16 18:09:33
【问题描述】:
每天,我目前必须:
- 下载 50 个文件,40 个为 .csv(逗号分隔值)格式,10 个为 .txt。
- 在每个 .csv 文件中,有 5 列(称为 B、A、D、C、E),而 .txt 文件中有不同的 5 列(称为 G、H、I、J、 ķ)。
- 然后,我必须在 Excel 中手动打开并将 .csv 列重新排列为 40 个文件中的每一个的(A、B、C、D、E)。 .txt 文件已采用所需格式。
- 然后我在 unix 上使用 BTEQ 将这些全部加载到 15 个 teradata 表中
大约有3000行数据
在 stackoverflow 和反复试验的帮助下,我创建了 VBA:
- 下载所有 50 个文件,
- 为 csv 文件正确重新排列列,
- 然后在包含 .csv 文件的“INSERT INTO DBNAME.TABLENAME VALUES (A, B, C, D, E, F)”和“INSERT INTO DBNAME.TABLENAME VALUES (G, H, I) 的新工作表上, J, K)" 用于 .txt 文件,将所有 50 个文件的实际值交换为 A 到 K
- 创建到 teradata 的 ODBC 连接以循环遍历所有 3000 个创建的语句。
它可以工作,但速度很慢,因为它循环了 3000 左右的行。由于 teradata 数据库随时都有大量的人访问,所以每次出现错误时,我的 insert 语句都必须排到队列的后面,从而增加了完成过程所花费的时间。
是否可以创建将批量加载 50 个文件的 VBA,而不是创建 3000 个插入语句和循环的当前方法? 我读过一个使用“Jet Provider”导入 Teradata 的过程,但我对此知之甚少,到目前为止我的努力都失败了。
有人知道这种方法或其他更快的方法吗?我想避免 BTEQ、MLOAD 和不能 FLOAD(因为我加载的表不是空的)。 谢谢大家。
【问题讨论】: