2014-10-29 45 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文件,那麼您可能需要將其預處理爲可加載格式,例如分隔或二進制或文本數據。您可以用任何語言編寫單獨的代碼來實現此目的。