0

我有一个逗号分隔的 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);”的末尾。我已经尝试了一切,但似乎没有任何效果。能否请您指导。

4

0 回答 0