【问题标题】:Import excel file into teradata using tpt使用tpt将excel文件导入teradata
【发布时间】:2014-12-24 17:37:21
【问题描述】:

我需要将一个 excel 文件加载到一个已包含数据的 teradata 表中。我使用 TPT Inserter 操作符来加载带有 CSV 文件的数据。我不确定如何使用 TPT Inserter 直接加载 excel 文件。 当我尝试使用 TextDelimiter='TAB' 提供 excel 文件时,解析器抛出错误

data_connector:TPT19134 !错误!致命数据错误处理文件 'd:\sample_dat 一个.csv'。分隔数据解析错误:第 1 行中的列太少。

1) 有人可以解释直接将 excel 文件导入 teradata 时需要哪些选项

2) 如何使用 tptLoad / tptInserter 在 teradata 中加载 TAB 分隔的文件

我使用的脚本是:

define job insert_data
description 'Load from Excel to TD table'
(
define operator insert_operator
type inserter
schema *
attributes
(
 varchar logonmech='LDAP',
 varchar username='username',
 varchar userpassword='password',
 varchar tdpid='tdpid',
 varchar targettable='excel_to_table'
);
define schema upload_schema
(
 quarter varchar(20),
 cust_type varchar(20)
);
define operator data_connector
type dataconnector producer
schema upload_schema
attributes
(
 varchar filename='d:\sample_data.xlsx',
 varchar format='delimited',
 varchar textdelimiter='TAB',
 varchar openmode='Read'
);
apply ('insert into excel_to_table(quarter, cust_type) values(:quarter, :cust_type);')
to operator (insert_operator[1])
select quarter, cust_type
from operator (data_connector[1]); 
);

谢谢!!

【问题讨论】:

  • 您确定文件是制表符分隔格式吗? .xlsx 扩展名通常不是制表符分隔的。您是否通过在 Notepad++ 等文本编辑器中打开文件来验证文件的内容?
  • @xenodevil 你是对的。我在记事本中打开 xlsx 文件,发现只有垃圾数据。这应该是TPT错误的原因。想知道有没有什么方法可以使用 TPT 将 Excel 数据直接加载到 Teradata 中?...
  • 不,没有任何通用方法可以使用本机 Teradata 实用程序将随机 Excel 文件加载到 TD 中。我认为原因是 Excel 文件可能包含复杂的对象(图形/图表/图像)和公式,需要复杂的工具才能正确操作。您可能会找到一些用于此类目的的第三方工具,但如果它只有一个文件,那么手动将其转换为 CSV 格式然后使用本机 TTU 加载 CSV 文件会更容易

标签: import teradata


【解决方案1】:

除了错误与分隔数据有关并且脚本中指定了 .xlsx 扩展文件这一事实外,这些脚本实际上看起来还不错。您确定指定的文件是制表符分隔的吗?

TPT Dataconnector 运算符支持的格式有:

  • 二进制 - 二进制数据完全符合定义的模式和指示符字节
  • 分隔 - 更容易用于多列人类可读文件,仅限于所有 varchar 架构
  • 格式化 - 用于处理由 Teradata TTU 导出的数据
  • 文本 - 用于包含固定宽度列的文本文件,也是人类可读的,仅限于所有 varchar 模式
  • 未格式化 - 用于处理由 Teradata TTU 导出的数据

原生 TPT 运算符不直接支持原始 excel 数据(以真正的 xls 或 xlsx 格式)。但是,如果您的数据确实是制表符分隔的,那么这应该不是问题;你应该能够加载这个。加载分隔文件时要考虑的一个明显点是 Char 或 Varchar 字段不得在数据中包含分隔符。您可以使用“\”转义数据中的分隔符。更微妙的一点是,您不能以小写形式指定 TAB 分隔符,即 varchar textdelimiter='TAB' 有效,但 varchar textdelimiter='tab' 无效。此外,任何其他控制字符(TAB 除外)都不能指定为分隔符。

如果您确实需要加载 excel 文件,那么您可能需要将其预处理为可加载的格式,例如定界或二进制或文本数据。您可以用任何语言编写单独的代码来实现这一点。

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2019-10-19
    • 2020-09-01
    • 2013-10-21
    • 2010-11-22
    • 2019-01-01
    • 2018-07-22
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多