使用TPT加载器从Excel加载Teradata表

时间:2019-06-04 11:11:21

标签: pandas python-2.7 teradata teradata-sql-assistant

我已经开发了python脚本并使用了pandas模块来编写excel文件。 在执行命令 print(df1.columns)时,我将dtype作为“对象”。

并使用相同的Excel文件通过TPT脚本加载到Teradata表中,并获得以下错误

FILE_READER [1]:TPT19108数据格式'DELIMITED'需要所有'VARCHAR / JSON / JSON BY NAME / CLOB BY NAME / BLOB BY NAME / XML BY NAME / XML / CLOB'模式。

在TPT中使用说明:-

 DEFINE SCHEMA Teradata__DATA
 DESCRIPTION 'SCHEMA OF Teradata data'
 (
 Issue_Key VARCHAR(255),
 Log_Date VARDATE(10) FORMATIN ('YYYY-MM-DD') FORMATOUT ('YYYY-MM-DD'),
 User_Name VARCHAR(255),
 Time_Spent NUMBER(10,2)

请帮助解决故障消息。错误可能是由于不同的数据类型或由于定义了“ TAB”而引起的。请指出是否还有其他原因导致此失败。

CODE

df = pd.read_excel('Time_Log_Source_2019-05-30.xlsx', sheet_name='Sheet1', dtype=str)
print("Column headings:")
print(df.columns)
df = pd.DataFrame(df,columns=['Issue Key', 'Log Date', 'User', 'Time Spent(Sec)'])
df['Log Date'] = df['Log Date'].str[:10]
df['Time Spent(Sec)'] = df['Time Spent(Sec)'].astype(int)/3600
print(df)
df.to_excel("Time_Log_Source_2019-05-30_output.xlsx")
df1 = pd.read_excel('Time_Log_Source_2019-05-30_output.xlsx', sheet_name='Sheet1',dtype=str)
df1['Issue Key'] = df1['Issue Key'].astype('str')
df1['Log Date'] = df1['Log Date'].astype('str')
df1['User'] = df1['User'].astype('str')
df1['Time Spent(Sec)'] = df1['Time Spent(Sec)'].astype('str')
df1.to_excel("Time_Log_Source_2019-05-30_output.xlsx",startrow=0, startcol=0, index=False)
print(type(df1['Time Spent(Sec)']))
print(df.columns)
print(df1.columns)

结果

Index([u'Issue Key', u'Log Date', u'User', u'Time Spent(Sec)'], dtype='object')
Index([u'Issue Key', u'Log Date', u'User', u'Time Spent(Sec)'], dtype='object')

1 个答案:

答案 0 :(得分:0)

TPT模式描述的是客户端记录中的字段,而不是数据库表中的列。您需要更改架构,以说(输入)Time_Spent为VARCHAR。

但是TPT本身不读取.xlsx文件。考虑使用head: cannot open 'onlinepresentation.txt' for reading: No such file or directory 代替to_csv