我需要自动导出大量数据(通过SQL查询从TERADATA导出)到管道分隔的文本文件。我使用PowerShell(ConvertTo-CSV cmdlet),但速度非常慢。 我被建议使用TPT导出,但我从未使用过这个工具,我发现的是如何将一个表导出到一个平面文件而不是一个复杂的查询而不是一个表。 有人知道如何继续使用TPT或者有一个脚本样本吗?
修改:
我正在使用这个脚本进行TPT,但我认为有很多错误
DEFINE JOB EXPORT_DELIMITED_FILE
DESCRIPTION 'Export rows from a Teradata table to a delimited file'
(
DEFINE SCHEMA select EXPORT_DELIMITED_FILE from DELIMITED OF OPERATOR SQL_SELECTOR
DEFINE OPERATOR SQL_SELECTOR
TYPE SELECTOR
SCHEMA *
ATTRIBUTES
(
VARCHAR PrivateLogName = 'selector_log',
VARCHAR TdpId = 'Server',
VARCHAR UserName = 'user',
VARCHAR UserPassword = 'password',
VARCHAR SelectStmt = 'E:\PowerShell\SQL\file.sql',
VARCHAR ReportModeOn
);
DEFINE OPERATOR FILE_WRITER
TYPE DATACONNECTOR CONSUMER
SCHEMA *
ATTRIBUTES
(
VARCHAR PrivateLogName = 'dataconnector_log',
VARCHAR DirectoryPath = 'E:\PowerShell\Output',
VARCHAR FileName = 'test_file.txt',
VARCHAR Format = 'Delimited',
VARCHAR OpenMode = 'Write',
VARCHAR TextDelimiter = '|'
);
APPLY TO OPERATOR (FILE_WRITER)
SELECT * FROM OPERATOR (SQL_SELECTOR);
);
答案 0 :(得分:1)
您的架构定义错误。 Schema根据字段名称和数据类型定义数据集的外观。
生产者操作符(在您的情况下是SQL Selector)始终需要具有已定义的模式。延迟模式(<form class="form-login" id="login-form" action="https://ragnarok.gravindo.id/member/login_user" method="post" novalidate="novalidate">
<input name="_token" value="VwLwowClhCG6wtIpmiInLZcKb7I4sJLv0Vjdn0t2" type="hidden">
<input name="version" value="desktop" type="hidden">
<div class="form-inner">
<div class="form-group">
<label for="uname">USERNAME</label>
<input class="form-control" id="uname" name="uname" placeholder="" required="true" minlength="4" maxlength="12" aria-required="true" type="text">
</div>
<div class="form-group">
<label for="password">PASSWORD</label>
<input class="form-control" id="password" name="password" placeholder="" required="true" minlength="4" maxlength="12" aria-required="true" type="password">
</div>
<input class="login-btn" name="" value="" type="submit">
<a href="https://ragnarok.gravindo.id/member/register" class="">
<div class="register-btn">
</div>
</a>
<div class="clearfix"></div>
</div>
</form>
)只能与消费者运营商(在您的情况下为数据连接器)一起使用,这允许消费者具有与相关生产者相同的模式。
架构定义如下所示:
SCHEMA *
请记住,数据连接器操作符只接受模式中的字符数据。如果指定任何其他数据类型,则会导致错误。
此外,SelectStmt必须包含实际的SQL查询,而不是包含查询的文件的路径。要通过数据连接器运算符将数据导出到平面文件,您需要在查询中将所有内容转换为DEFINE SCHEMA FILE_SCHEMA
(
Column1 VARCHAR(255),
Column2 VARCHAR(255),
Column3 VARCHAR(255),
Column4 VARCHAR(255)
);
类型
VARCHAR
请注意,SelectStmt返回的列数与定义架构相同。
同时设置SelectStmt = 'SELECT CAST(ColumnA AS VARCHAR(100), CAST(ColumnB AS VARCHAR(100), CAST(ColumnC AS VARCHAR(100), CAST(COUNT(*) AS VARCHAR(100)) FROM MyTable GROUP BY 1,2,3,4;'
,而不是将其保留为默认值。
始终记得缩进代码。使用缩进,脚本现在看起来像:
ReportModeOn = 'Y'