【问题标题】:How can I get the number of rows inserted?如何获取插入的行数?
【发布时间】:2019-09-13 13:09:20
【问题描述】:

我正在使用 CSV 文件来加载我的 Teradata 数据库以及 Unix 中的 .tpt 文件。有什么方法可以让我的表中插入的行数?与任何助手一样,典型消息X Rows Inserted。我想要的是得到那个 X。谢谢。这是我的.tpt 文件之一的代码:

DEFINE JOB X_1
DESCRIPTION 'LOADING OF TABLE TABLE_1'
(
    DEFINE SCHEMA X_1
    (
        _FIELD_1            VARCHAR(8)
        ,_FIELD_2   VARCHAR(20)
        ,_FIELD_3       VARCHAR(20)
    );

    DEFINE OPERATOR DDL_OPERATOR
    TYPE DDL_OPERATOR
    ATTRIBUTES
    (
        VARCHAR PrivateLogName      = 'ddl_log'
        ,VARCHAR TdpId              = @jobvar_TDP
        ,VARCHAR UserName           = @jobvar_username
        ,VARCHAR UserPassword       = @jobvar_password
        ,VARCHAR QueryBandSessInfo  = @jobvar_QBSessInfo
        ,VARCHAR ErrorList          = '3807'
    );

    DEFINE OPERATOR FILE_READER
    TYPE DATACONNECTOR PRODUCER
    SCHEMA X_1
    ATTRIBUTES
    (
        VARCHAR PrivateLogName      = 'dataconnector_log'
        ,VARCHAR DirectoryPath      = @jobvar_datafiles_path
        ,VARCHAR FileName           = @jobvar_file_load
        ,VARCHAR Format             = 'Delimeted'
        ,VARCHAR TextDelimeter      = '|'
        ,INTEGER SkipRows           = 1
        ,VARCHAR OpenMode           = 'Read'
    );

    DEFINE OPERATOR LOAD_OPERATOR
    Type LOAD
    SCHEMA *
    ATTRIBUTES
    (
        VARCHAR PrivateLogName      = 'load_op_log'
        ,VARCHAR TdpId              = @jobvar_TDP
        ,VARCHAR UserName           = @jobvar_username
        ,VARCHAR UserPassword       = @jobvar_password
        ,INTEGER MaxSessions        = @jobvar_maxsessions
        ,INTEGER ErrorLimit         = 1
        ,VARCHAR Targettable        = @jobvar_tgt_dbname || '.TABLE_1'
        ,VARCHAR LogTable           = @jobvar_tgt_dbname || '.LG_TABLE_1'
        ,VARCHAR ErrorTable1        = @jobvar_tgt_dbname || '.ET_TABLE_1'
        ,VARCHAR ErrorTable2        = @jobvar_tgt_dbname || '.UV_TABLE_1'
    );

    STEP Setup_Tables
    (
        APPLY
            ('DROP TABLE    ' || @jobvar_tgt_dbname || '.ET_TABLE_1;'),
            ('DROP TABLE    ' || @jobvar_tgt_dbname || '.LG_TABLE_1;'),
            ('DROP TABLE    ' || @jobvar_tgt_dbname || '.UV_TABLE_1;'),
            ('DROP TABLE    ' || @jobvar_tgt_dbname || '.TABLE_1;'),
            ('CREATE MULTISET TABLE ' || @jobvar_tgt_dbname || '.TABLE_1
            (
                FIELD_1 VARCHAR(8) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
                FIELD_2 VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
                FIELD_3 VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL
            )PRIMARY INDEX(FIELD_1, FIELD_2, FIELD_3);'
            )
        TO OPERATOR (DDL_OPERATOR);
    );
    STEP Load_TABLE_1_Table
    (
        APPLY
            ('INSERT INTO ' || @jobvar_tgt_dbname || '.TABLE_1
            (
                FIELD_1
                ,FIELD_2
                ,FIELD_3
            )
            VALUES
            (
                _FIELD_1
                ,_FIELD_2
                ,_FIELD_3
            )
            ;')

    )
)

【问题讨论】:

  • @Ashish_Mahajan,请原谅我的无知,但是在最初的问题中,您指的是这个 MySQL 命令吗?

标签: database csv unix teradata


【解决方案1】:

您可以使用tlogview-f TWB_EVENTS(对于LoadRowsInserted 的插入计数grep)从作业的TPT 日志文件中提取信息。 查看TPT 用户指南中关于操作元数据的章节。

根据您的 Teradata 版本和 QueryLog 设置,您也可以在 dbc.QryLogUtilityV 视图中找到作业详细信息。

【讨论】:

  • 这是可以查询的,类似于这个 tlogview -j job-seq -f TWB_EVENTS -w 'TASKNAME="LoadRowsInserted"'?我一直在尝试这个,没有午餐
猜你喜欢
  • 1970-01-01
  • 2015-03-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多