将文件加载到Teradata中

时间:2013-11-16 18:09:34

标签: sql excel vba csv odbc

每日,我目前要:

  1. 下载50个文件,40个是.csv(逗号分隔值)格式,10个是.txt。
  2. 在每个.csv文件中,有5列(称为B,A,D,C,E),以及.txt文件中的不同5列(称为G,H,I,J, K)。
  3. 然后我必须在Excel中手动打开并将.csv列重新排列为(A,B,C,D,E)40个文件中的每一个。 .txt文件已采用所需格式。
  4. 然后我将这些全部加载到15个teradata表中,使用unix上的BTEQ
  5. 大约有3000行数据

    在stackoverflow和我的试验和错误的帮助下,我创建了VBA:

    1. 下载所有50个文件,
    2. 正确地为csv文件重新排列列
    3. 然后在包含" INSERT INTO DBNAME.TABLENAME VALUES(A,B,C,D,E,F)"对于.csv文件和" INSERT INTO DBNAME.TABLENAME VALUES(G,H,I,J,K)"对于.txt文件,将A到K交换为来自所有50个文件的实际值
    4. 创建与teradata的ODBC连接,以遍历所有3000个已创建的语句。
    5. 它有效,但它很慢,因为它循环了3000行左右。由于teradata数据库始终由大量人员访问,因此每次发生错误时,我的insert语句都必须转到队列的后面,这会增加完成该过程所需的时间。

      是否可以创建将批量加载50个文件的VBA而不是我当前的方法来创建3000个插入语句和循环? 我已经阅读了使用' Jet Provider'进入Teradata的流程,但我对此知之甚少,到目前为止我的努力都失败了。

      任何人都知道这种方法或任何其他更快的方法?我想避免BTEQ,MLOAD并且不能FLOAD(因为我加载的表不是空的)。 谢谢大家。

1 个答案:

答案 0 :(得分:1)

无论有多少用户,Teradata都能轻松处理大量插入物。然而,Teradata在小型刀片方面非常糟糕。您需要将它们捆绑成一次性加载的大型卷。 Teradata(mload)提供了工具。然后你获得最佳表现。

作为替代方案,可能不那么快,确保在SQL中使用绑定变量而不是显式值。解析可能需要很长时间。您可能需要考虑Kettle - ETL toolInvantive Control - Excel add-in(警告,我在那里工作)等工具从Excel加载到Teradata。它们也可以并行加载,从而提高性能。