将Clob数据类型加载到teradata的Tpt脚本问题

将Clob数据类型加载到teradata的Tpt脚本问题,teradata,utilities,Teradata,Utilities,我正在写我的第一个tpt脚本。我的要求是基本的。我想将exadata中的一个表(也有clob和blob数据类型)加载到teradata中。 我遇到过一些帖子说我只能使用SQLInserter操作符来加载clob和blob类型。我发现以下脚本: SET TdpId= SET UserName= SET UserPassword= DEFINE JOB LOADING_LOB_DATA DESCRIPTION 'LOAD PRODUCT DEFINITION TABLE' ( DEFINE SCH

我正在写我的第一个tpt脚本。我的要求是基本的。我想将exadata中的一个表(也有clob和blob数据类型)加载到teradata中。 我遇到过一些帖子说我只能使用SQLInserter操作符来加载clob和blob类型。我发现以下脚本:

SET TdpId=
SET UserName=
SET UserPassword=
DEFINE JOB LOADING_LOB_DATA
DESCRIPTION 'LOAD PRODUCT DEFINITION TABLE'
(

DEFINE SCHEMA SOURCE_SCHEMA
DESCRIPTION 'PRODUCT INFORMATION SCHEMA'
(
     COL1_ID VARCHAR(38),
     COL2_CLOB CLOB(50000) AS DEFERRED BY NAME,
     COL3_BLOB BLOB(100000) AS DEFERRED BY NAME
);

DEFINE OPERATOR DDL_OPERATOR()
DESCRIPTION 'DDL Operator'
TYPE DDL
ATTRIBUTES
(
    VARCHAR ARRAY ErrorList = ['3706','3803','3807'],
    VARCHAR DateForm,
    VARCHAR TraceLevel = ‘None’,
    VARCHAR PrivateLogName = 'ddllog',
    VARCHAR TdpId = @TdpId,
    VARCHAR UserName = @UserName,
    VARCHAR UserPassword = @UserPassword,
    VARCHAR AccountID,
    VARCHAR WorkingDatabase
);

DEFINE OPERATOR FILE_READER ()
DESCRIPTION 'DataConnector READER Operator'
TYPE DATACONNECTOR PRODUCER
SCHEMA SOURCE_SCHEMA
ATTRIBUTES
(
    VARCHAR TraceLevel = ‘None’,
    VARCHAR PrivateLogName = 'dtac_r_log',
    VARCHAR DirectoryPath = @SourceDirectoryPath,
    VARCHAR FileName = @SourceFileName,
    VARCHAR OpenMode = 'Read',
    VARCHAR IndicatorMode,
    VARCHAR Format = @SourceFileFormat
);

DEFINE OPERATOR SQL_INSERTER ()
DESCRIPTION 'TERADATA INSERTER UTILITY'
TYPE INSERTER 
INPUT SCHEMA *
ATTRIBUTES
(
    VARCHAR TraceLevel = 'None',
    VARCHAR PrivateLogName = 'ins_log',
    VARCHAR Tdpid = @TdpId,
    VARCHAR UserName = @UserName,
    VARCHAR UserPassword = @UserPassword
);

STEP CREATE_SOURCE_TABLE
(
    APPLY
    ('drop table ' || @SourceTable || ' ;'),
    ('create table ' || @SourceTable || ' , FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL
   (
        col1_id VARCHAR(38),
        col2_clob clob(50000),
        col3_blob blob(100000)
    ) primary index (col1_id);')

   TO OPERATOR ( DDL_OPERATOR () );
);

STEP LOADING_DATA_TO_SOURCE_TABLE
(
    APPLY

     ('INSERT INTO ' || @SourceTable || ' values ( 
        :COL1_ID, :COL2_CLOB, :COL3_BLOB);')

   TO OPERATOR (SQL_INSERTER [1])

   SELECT * FROM OPERATOR (FILE_READER ());
);

);
有谁能告诉我file_reader()运算符和ddl_运算符在这里有什么用途吗?我不需要先使用ODBC_运算符,然后再使用sql运算符吗?
请帮助我。

此脚本(重新)首先创建目标表(使用DDL运算符),然后从平面文件读取数据(使用文件读取器运算符),最后插入目标表(使用SQL插入器运算符)。如果没有LOB,您可以轻松地使用ODBC操作符,但恐怕它无法导出LOB。该脚本似乎来自Teradata的Developer Exchange上的一篇旧文章,您最好阅读TPT用户指南,其中包括许多示例脚本:Sure Dnoeth,谢谢您的评论@dnoeth…TPT是否能够直接从exadata或从oracle exadata导出的文件中读取LOB表,如上述脚本所示,在示例中,我可以看到仅使用了文件读取器,没有关于源详细信息的变量等。