我有一个逗号分隔的 CSV 文件,需要加载到 Teradata 表中。通常,当需要将单个文件加载到单个表中时,fastload 在这种情况下非常有用。这里的问题是 CSV 文件中的数据字段用引号括起来(示例 csv 文件数据在下面共享以供参考)。当源文件采用这种格式时,Fastload 不处理/支持/加载数据。TPUMP 处理这种类型的数据文件,但它在后台创建宏来发出语句。不幸的是,我正在为其工作的客户没有提供“创建宏”权限,因此 TPUMP 脚本不是一个选项。这个文件可以在 Multiload 的帮助下加载吗?如果是的话,那么有人会指导我如何使用 mload 在 teradata 中加载引用的数据。一个小的脚本示例将不胜感激。
谢谢
"Received","From","Destination","Message Text","Status","Folder","Folder Owner",
"2020-06-25 13:31:47","125674122450","61119","EEEEEE","Not Processed","n/a","n/a"
"2020-06-25 13:14:15","125683011742","82332","CCC 000000 59303760","Processed","COMMERCIAL CCC","BSSSUser"
"2020-06-25 13:09:48","125693033666","61112","YesLLLL ","Processed","Cooooo AAAAA ","9890374"
@dnoeth 我已经编写了下面的 TPTLOAD 脚本,但它给出了错误
/**************************************************************/
/* IMI_T7_SMS_RESPONSES */
/* Load CSV Data Into TERADATA */
/**************************************************************/
DEFINE JOB LOAD_TD_FROM_CSV
DESCRIPTION 'Load Teradata table from CSV File'
(
DEFINE SCHEMA IMI_T7_SMS_RESPONSES
DESCRIPTION 'IMI_T7_SMS_RESPONSES'
(
Response_Dttm VARCHAR(100)
,From_Number VARCHAR(20)
,To_Shortcode VARCHAR(5)
,Response_Text VARCHAR(100)
,Status VARCHAR(100)
,Folder VARCHAR(100)
,Folder_Owner VARCHAR(100)
);
DEFINE OPERATOR DDL_OPERATOR
TYPE DDL
ATTRIBUTES
(
VARCHAR TdpId = 'system',
VARCHAR UserName = 'username',
VARCHAR UserPassword = 'password'
);
DEFINE OPERATOR LOAD_CSV
DESCRIPTION 'Operator to Load CSV Data'
TYPE LOAD
SCHEMA IMI_T7_SMS_RESPONSES
ATTRIBUTES
(
VARCHAR PrivateLogName,
VARCHAR TraceLevel = 'None',
INTEGER TenacityHours = 1,
INTEGER TenacitySleep = 1,
INTEGER MaxSessions = 4,
INTEGER MinSessions = 1,
VARCHAR TargetTable = 'trm_lead_history.IMI_T7_SMS_RESPONSES_TEST',
VARCHAR ErrorTable1 = 'trm_lead_history.IMI_T7_SMS_RESPONSES_E1',
VARCHAR ErrorTable2 = 'trm_lead_history.IMI_T7_SMS_RESPONSES_E2',
VARCHAR LogTable = 'trm_lead_history.IMI_T7_SMS_RESPONSES_LOG',
VARCHAR TdpId = 'system',
VARCHAR UserName = 'User',
VARCHAR UserPassword = 'password'
);
DEFINE OPERATOR READ_CSV
DESCRIPTION 'Operator to Read CSV File'
TYPE DATACONNECTOR PRODUCER
SCHEMA IMI_T7_SMS_RESPONSES
ATTRIBUTES
(
VARCHAR Filename = 'C:\Users\nofel\Desktop\fastload\nick\IMI_T7_SMS_RESPONSES.csv'
,VARCHAR Format = 'Delimited'
,VARCHAR TextDelimiter = ','
,VARCHAR CloseQuoteMark = '"'
,VARCHAR OpenQuoteMark = '"'
,VARCHAR AcceptExcessColumns = 'N'
,VARCHAR PrivateLogName = 'LOAD_FROM_CSV'
,VARCHAR QuotedData = 'Y'
,Varchar EscapeQuoteDelimiter = '"'
);
Step Setup_Tables
(
APPLY
('DROP TABLE TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_E1;' ),
('DROP TABLE TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_E2;' ),
('DROP TABLE TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_LOG;'),
('DROP TABLE TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_TEST;'),
('CREATE SET TABLE TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_TEST,
NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
Response_Dttm VARCHAR(100)
,From_Number VARCHAR(20)
,To_Shortcode VARCHAR(5)
,Response_Text VARCHAR(100)
,Status VARCHAR(100)
,Folder VARCHAR(100)
,Folder_Owner VARCHAR(100)
);')
TO OPERATOR (DDL_OPERATOR);
);
Step Load_Table
(
APPLY ('INSERT INTO TRM_LEAD_HISTORY.IMI_T7_SMS_RESPONSES_TEST
(
:Response_Dttm
,:From_Number
,:To_Shortcode
,:Response_Text
,:Status
,:Folder
,:Folder_Owner );')
TO OPERATOR (LOAD_CSV)
SELECT * FROM (OPERATOR READ_CSV);
);
);
它给出了错误“作业脚本文件'IMI_T7_SMS_RESPONSS.tpt:TPT_INFRA:在“选择”规则中缺少分号_的第111行或附近的语法错误:步骤编译因错误而失败
第 111 行以上代码的参考位于代码“SELECT * FROM (OPERATOR READ_CSV);”的末尾。我已经尝试了一切,但似乎没有任何效果。能否请您指导。