我需要将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]);
);
谢谢!
答案 0 :(得分:0)
除了错误与分隔数据相关并且脚本中指定了.xlsx扩展文件之外,脚本实际上看起来很好。您确定指定的文件是制表符分隔符吗?
TPT Dataconnector运营商支持的格式为:
本机TPT运营商不直接支持原始excel数据(以真xls或xlsx格式)。但是如果你的数据真的是用Tab分隔的那么这不应该是一个问题;你应该能够加载它。加载分隔文件时需要考虑的一个明显点是Char或Varchar字段不得在数据中包含分隔符。您可以使用' \'来转义数据中的分隔符字符。更微妙的一点是,您不能以小写形式指定TAB分隔符,即varchar textdelimiter='TAB'
有效但varchar textdelimiter='tab'
不起作用。此外,任何其他控制字符(除了TAB)都不能指定为分隔符。
如果您确实需要加载excel文件,则可能需要将其预处理为可加载格式,例如分隔文件或二进制文件或文本数据。您可以使用任何语言编写单独的代码来实现此目的。