使用tpt将excel文件导入teradata

时间:2014-10-29 05:14:16

标签: import teradata

我需要将excel文件加载到已有数据的teradata表中。我使用TPT Inserter运算符来加载CSV文件的数据。我不知道如何使用TPT Inserter直接加载excel文件。 当我尝试使用TextDelimiter ='TAB'提供excel文件时,解析器引发了错误

  

data_connector:TPT19134!错误!致命数据错误处理文件'd:\ sample_dat   a.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]); 
);

谢谢!

1 个答案:

答案 0 :(得分:0)

除了错误与分隔数据相关并且脚本中指定了.xlsx扩展文件之外,脚本实际上看起来很好。您确定指定的文件是制表符分隔符吗?

TPT Dataconnector运营商支持的格式为:

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

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

如果您确实需要加载excel文件,则可能需要将其预处理为可加载格式,例如分隔文件或二进制文件或文本数据。您可以使用任何语言编写单独的代码来实现此目的。