2014-10-29 144 views
0

我需要将excel文件加载到已有数据的teradata表中。我已经使用TPT插件运算符来加载CSV文件的数据。我不知道如何使用TPT插件直接加载excel文件。 当我试图提供了Excel与TextDelimiter =“TAB”文件,解析器抛出一个错误使用tpt将excel文件导入到teradata中

data_connector: TPT19134 !ERROR! Fatal data error processing file 'd:\sample_dat a.csv'. Delimited Data Parsing error: Too few columns in row 1.

1)有人能解释什么是所需的选项,而直接导入Excel文件的Teradata

2)如何加载使用tptLoad/tptInserter

,我已经使用这个脚本在Teradata的制表符分隔的文件是:

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]); 
); 

谢谢!

+0

确定该文件是以制表符分隔的格式? .xlsx扩展名一般不是制表符分隔的。您是否通过在文本编辑器(如Notepad ++)中打开文件来验证文件的内容? – xenodevil 2014-10-29 20:37:23

+0

@xenodevil你是对的。我用记事本打开了xlsx文件,发现只有垃圾数据。这应该是TPT错误的原因。想知道是否有任何方法可以使用TPT将Excel数据直接加载到Teradata?... – Sam 2014-10-31 11:20:25

+0

不,没有任何通用的方法可以使用本机Teradata Utilities将随机Excel文件加载到TD中。我认为,原因是Excel文件可以包含复杂的对象(图表/图表/图像)以及需要复杂工具进行正确操作的公式。您可能会发现一些第三方工具用于此目的,但如果它只有一个文件,那么手动将其转换为CSV格式然后使用本地TTU加载CSV文件 – xenodevil 2014-11-24 14:29:42

回答

0

除了事实上错误与分隔数据相关并且脚本中指定了.xlsx扩展名文件外,脚本实际上看起来很好。你确定指定的文件是制表符分隔吗?通过TPT Dataconnector运营商支持

格式是:

  • 二进制 - 二进制数据中所定义的架构加指示器恰好嵌合字节
  • 分隔 - 更容易了多列的人类可读文件的,仅限于所有VARCHAR架构
  • 格式化 - 与通过的Teradata TTUs导出的数据工作
  • 文本 - 对于含有固定宽度的列,也文本文件人类可读,仅限于所有VARCHAR架构
  • 未格式化 - 对于与Teradata的TTUs

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

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