Teradata TPT(Teradata Parallel Transporter)使用

4 篇文章 0 订阅
3 篇文章 0 订阅

参考连接

1.TPT文档
2.问题连接1
3.问题连接2
4.decimal精度问题

一. Teradata的tpt文件中表结构定义简化方式

组装表结构到tpt文件中

  1. 通过参数传递比较麻烦
  2. 生成新的tpt文件也比较麻烦

因此有没有不需要定义源表结构?

目前好像都需要定义表结构

示例

如tpt文件定义如下,此时需要设置表结构,用参数@DataSchema表示

格式: DEFINE SCHEMA <name> ‘tablename’;

DEFINE SCHEMA <name> @SourceTableName;

USING CHARACTER SET UTF8
DEFINE JOB EXPORT_TO_INDICDATA_FILE_FORMAT
DESCRIPTION 'Export From ' || @SourceTableName || ' to the INDICDATA file: ' || @DataFileName
(
    DEFINE SCHEMA @SchemaName
    (
        @DataSchema
    );

      DEFINE OPERATOR EXPORT_OPERATOR
      TYPE EXPORT
      SCHEMA @SchemaName
      ATTRIBUTES
      (
          VARCHAR PrivateLogName = @SourceTableName || '.log',
          VARCHAR TdpId          = @TdpId,
          VARCHAR UserName       = @UserName,
          VARCHAR UserPassword   = @UserPassword,
          VARCHAR DateForm       = 'INTEGERDATE',
          VARCHAR SelectStmt     = 'SELECT * FROM ' || @SourceTableName
      );

解决方案

1.表结构相同上述SCHEMA定义可以简化,省去组装表结构操作

DEFINE SCHEMA @SchemaName   @DataSchema;

参数 @DataSchema 格式为:库名+表名,点号连接 [dbname.tablename],通过脚本传递需加单引号(注单引号转义 "DataSchema=‘dbname.T1’ ")

2 .报错:error 3862,The tables in BEGIN LOADING statement must be different

LOAD的ATTRIBUTES里面不配置错误表 ErrorTable1 ErrorTable2,解决

3.步骤APPLY中语句合并会报错

 STEP Setup_Tables
 (
   APPLY
   (@DROP_T),
   (@DROP_LOG),
   (@DROP_E1),
   (@DROP_E2),
   (@CREATE_T)
   TO OPERATE(DDL_OPERATOR);
 );

 STEP INSERT_INTO_TABLE
 (
   APPLY
   (
       @SQL
   )
   TO OPERATOR (LOAD_OPERATOR)
   SELECT * FROM OPERATOR(EXPORT_OPERATOR);
 );

如参数为 ‘DROP_T=DROP TABLE XXX;’
错误一
若参数打算多条封装成一条如’DROP TABLE T1;DROP TABLE T2’,报错
因此这里定义的语句需要提前设计好,或者不通过设置步骤这种方式操作

14.10版本@DataSchema传递表名没问题
15.10版本报错
可能由如下原因导致:

DEFINE SCHEMA schema-name ‘DBS table name’
DEFINE SCHEMA schema-name DELIMITED ‘DBS table name’
过时了as being obsolete, and not to use.

The syntax should be:
DEFINE SCHEMA schema-name FROM TABLE ‘DBS table name’
DEFINE SCHEMA schema-name FROM TABLE DELIMITED ‘DBS table name’
最终方案
加不加FROM TABLE 都可以

错误二
the user does not create table … access XXDB
用户已经授权XXDB库了,还是报上述错误
解决方法:
删除步骤三Setup_Tables

错误三
load error 3261 … unless secondary indexs and join indexs are removed
解决方法:
建表语句不加次级索引及其他联合索引(可以有主索引)

错误四
TPT02638:Error: Conflicting data length for column . “xxx”. Source column’s data length(16)
Target column’s data length (8).
EXPORT_OPERATOR:TPT12108:Output Schema does not match data from SELECT statement

解决方法:
默认情况下TPT支持18(8)字节十进制精度,源列定义为十进制,精度为24(需要16字节)
设置ExportOperator 属性 MaxDecimalDigits=31

重复数据问题

建表语句NPI方式,向该表加载数据时不会去重。否则fastload加载默认去重复

create MULTISET table TESTDB.TEST_A AS TESTDB.TEST WITH NO DATA NO PRIMARY INDEX;
-- 若TESTDB.TEST表有次级索引等其他索引,则TESTDB.TEST_A表需要删除对应的索引
DROP INDEX(字段名) ON TESTDB.TEST_A;

当表结构的字段设置了unique如
unique primary index(A)
则A字段数据相同认为是重复
若表结构字段都没偶设置unique
则所有字段的数据相同认为是重复

二. 使用TPT方式导出文件

如果文件名为.gz则导出的是压缩文件,如果文件的.txt则导出普通非压缩文件。

1.新建配置文件

新建文件exportFile.tpt

DEFINE JOB EXPORT_FILE
DESCRIPTION 'EXPORT FILE'
(
    DEFINE SCHEMA @schemaName @schemaAndTable;
    DEFINE OPERATOR @EXPOTOR
    TYPE EXPORT
    SCHEMA @schemaName
    ATTRIBUTES
    (
        VARCHAR TdpId=@server,
        VARCHAR UserName=@User,
        VARCHAR UserPassword=@Pwd,
        VARCHAR ReportModeOn='Y',
        INTEGER MaxSessions=4,
        INTEGER TenacitySleep=2,
        INTEGER MaxDecimalDigits=38,
        VARCHAR IgnoreMaxDecimalDigits='NO',
        VARCHAR SpoolMode='NOSPOOL',
        VARCHAR DateForm='ANSIDATA',
        VARCHAR SelectStmt=@querySql
   );
   DEFINE OPERATOR FILE_WRITER
   TYPE DATACONNECTOR CONSUMER
   SCHEMA @schemaName
   ATTRIBUTES
   (
       VARCHAR EscapeTextDelimiter='\\',
       VARCHAR EscapeQuoteDelimiter='\\"',
       VARCHAR TruncateColumnData='N',
       VARCHAR RecordErrorVerbosity='Med',
       VARCHAR TextDelimiter=@Delimiter,
       VARCHAR DirectoryPath=@exportFilePath,
       VARCHAR FileName=@onlyFileName,
       VARCHAR OpenMode='Write',
       VARCHAR IndicatorMode='N',
       VARCHAR TrimChar=' ',
   );
   APPLY TO OPERATOR(FILE_WRITER)
   SELECT * FROM OPERATOR(@EXPOTOR)
)

2.脚本调用

新建test.sh

# ATTRIBUTES接收的字符串类型参数需要加单引号,通常select语句中可能需要将单个单引号变成两个单引号
# ATTRIBUTES接收的数值类型参数不需要单引号
params="schemaName =\'name1\',schemaAndTable=\'public.test_table1\',EXPOTOR=\'export_test_table1\',server=\'dbc\',User=\'user1\',Pwd=\'pass123456\',querySql=\'SELECT COL1,COL2 FROM public.test_table1 where col3=''20220101'';\',Delimiter=\',\',exportFilePath=\'/tmp/dir\',onlyFileName=\'test_table1.dat.gz\'"
tlogs=`tbuild -f /tmp/exportfile.tpt -u "$params" -j export_test -C -L /tmp/logs -r /tmp/check` 
echo $?
echo $tlogs

# 无需从检查点重启-R 0
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Teradata SQL Assistant是Teradata公司提供的一款SQL编辑和执行工具。它支持多种数据库管理系统,并提供诸如自动完成、语法高亮等功能,方便用户编写和执行SQL语句。使用时需要配置连接数据库的信息,然后即可在工具中编写和执行SQL语句。 ### 回答2: Teradata SQL Assistant是一款用于管理和执行Teradata数据库的可视化工具。它提供了一系列的功能和工具,用于执行SQL查询,管理数据库对象,以及调试和优化查询性能。对于Teradata数据库的管理员和开发人员来说,这是一个非常重要且有效的工具。 Teradata SQL Assistant的主要功能包括: 1. 可视化查询界面:SQL Assistant提供了一个直观、易用的查询界面,用户可以方便地编写和执行SQL查询语句。 2. 数据库对象管理:SQL Assistant允许用户方便地管理数据库对象,例如表、视图、存储过程等。 3. 查询分析:SQL Assistant提供了丰富的查询分析工具,用户可以分析查询的执行计划,查看查询的IO和CPU消耗等。 4. 导入/导出数据:SQL Assistant提供了数据导入/导出功能,用户可以方便地将数据从文件或其他数据库中导入到Teradata数据库,也可以将数据从Teradata数据库导出到文件或其他数据库中。 5. 安全管理:SQL Assistant提供了安全管理功能,用户可以设置和管理数据库用户和角色。 除此之外,SQL Assistant还支持SQL自动完成、语法高亮、历史查询记录等功能,使用户的查询工作更加高效和便捷。 总之,Teradata SQL Assistant是一款强大而易用的工具,它提供了丰富的功能和工具,帮助用户更好地管理和优化Teradata数据库。对于Teradata数据库管理员和开发人员来说,它是一个必不可少的工具。 ### 回答3: Teradata SQL Assistant是一款用于执行SQL语句的工具,可以方便地管理Teradata数据库查询和分析数据。通过SQL Assistant,用户可以快速地查看、修改和导出数据。 首先,在SQL Assistant中,用户需要连接到Teradata数据库。在“File”菜单中,选择“New Query”,激活一个新的空白查询编辑器。点击“Connect”按钮,输入用户名和密码,选择连接类型,连接到Teradata数据库。 在查询编辑器中,可以输入SQL语句,进行查询分析数据。在输入SQL语句时,建议使用注释来描述查询结果和过程,以便稍后阅读或共享查询。在查询编辑器中,也可以使用提示和自动补全来加快SQL语句的编写速度。 在查询结果窗口中,用户可以浏览和导出数据。为了提高效率,可以将查询结果导出到Excel或CSV文件中,方便进一步处理和分析。 此外,SQL Assistant还提供了一些其他功能,例如执行多个查询、自动化查询执行、查看查询计划和分析查询错等等,这些功能可以帮助用户更好地管理和分析数据。 总之,Teradata SQL Assistant是一个非常方便的工具,为用户提供了快速、简便的数据库查询和数据分析方式。无论是数据分析师还是数据库管理员,都可以应用这个工具对数据进行更好的理解和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值