使用 tpt 加载程序从 excel 加载 Teradata table

Load Teradata table from excel using tpt loader

我开发了python,用pandas module写了excel。 在执行命令 print(df1.columns) 时,我得到的 dtype 为 'Object'.

并使用相同的 excel 加载 Teradata table 使用 TPT script 并低于错误

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”。如果有任何其他原因导致此失败,请提出建议。

代码

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')

TPT 模式描述 client-side 记录中的字段,而不是数据库 table 中的列。您需要更改架构以说明(输入)Time_Spent 是 VARCHAR。

但 TPT 本身并不读取 .xlsx 文件。考虑使用 to_csv 而不是 to_excel.