【问题标题】:Loading files into Teradata将文件加载到 Teradata
【发布时间】:2013-11-16 18:09:33
【问题描述】:

每天,我目前必须:

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

大约有3000行数据

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

  1. 下载所有 50 个文件,
  2. 为 csv 文件正确重新排列列,
  3. 然后在包含 .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
  4. 创建到 teradata 的 ODBC 连接以循环遍历所有 3000 个创建的语句。

它可以工作,但速度很慢,因为它循环了 3000 左右的行。由于 teradata 数据库随时都有大量的人访问,所以每次出现错误时,我的 insert 语句都必须排到队列的后面,从而增加了完成过程所花费的时间。

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

有人知道这种方法或其他更快的方法吗?我想避免 BTEQ、MLOAD 和不能 FLOAD(因为我加载的表不是空的)。 谢谢大家。

【问题讨论】:

    标签: sql excel vba csv odbc


    【解决方案1】:

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

    作为替代方案,可能速度较慢,请确保您在 SQL 中使用绑定变量而不是显式值。解析可能需要很多时间。您可能需要考虑使用诸如 Kettle - ETL toolInvantive Control - Excel add-in(警告,我在那里工作)之类的工具从 Excel 加载到 Teradata。它们还可以并行加载,从而提高性能。

    【讨论】:

    • mload、fload 和 bteq 恐怕我无法在可用的系统上使用。尽管如此,我会考虑您的“绑定变量”建议。谢谢。
    • 好的,祝你好运。根据我从 2007 年的情况回忆,SQL 插入语句的吞吐量是每个 TeraData VAMP(我认为总共 32 个 vamp-s)和绑定变量每秒 25 个单独的行插入,但没有批量加载。您可能会在 teradata 网站上找到 mload/fload/bteq 工具以供下载。
    猜你喜欢
    • 2015-03-20
    • 2014-08-31
    • 2021-07-22
    • 2015-08-02
    • 2014-03-30
    • 2016-02-05
    • 2016-10-03
    • 2013-07-13
    • 2017-07-01
    相关资源
    最近更新 更多