将Clob数据类型加载到teradata的Tpt脚本问题
我正在写我的第一个tpt脚本。我的要求是基本的。我想将exadata中的一个表(也有clob和blob数据类型)加载到teradata中。 我遇到过一些帖子说我只能使用SQLInserter操作符来加载clob和blob类型。我发现以下脚本:将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
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表,如上述脚本所示,在示例中,我可以看到仅使用了文件读取器,没有关于源详细信息的变量等。