将文件加载到 Teradata

Posted

技术标签:

【中文标题】将文件加载到 Teradata【英文标题】:Loading files into Teradata 【发布时间】: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行数据

在 *** 和反复试验的帮助下,我创建了 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(因为我加载的表不是空的)。 谢谢大家。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

mload、fload 和 bteq 恐怕我无法在可用的系统上使用。尽管如此,我会考虑您的“绑定变量”建议。谢谢。 好的,祝你好运。根据我从 2007 年的情况回忆,SQL 插入语句的吞吐量是每个 TeraData VAMP(我认为总共 32 个 vamp-s)和绑定变量每秒 25 个单独的行插入,但没有批量加载。您可能会在 teradata 网站上找到 mload/fload/bteq 工具以供下载。

以上是关于将文件加载到 Teradata的主要内容,如果未能解决你的问题,请参考以下文章

将 bmp 文件加载到 HBITMAP

如何将 CSV 文件批量加载到 Snowflake 中,并将文件名添加为列?

通过消除重复将数据从文本文件加载到mysql数据库

将帮助文件加载到 FactoryBot 文件中会导致“无法加载此类文件”[重复]

通过 JDBC 将文件加载到 hive

如何将 qml 文件重新加载到 QQuickView