使用 cmd windows 的 teradata 导出查询不起作用
teradata export query using cmd windows not working
新 post :
我已经阅读了教程并且找到了这个脚本
.LOGMECH LDAP;
.LOGON xx.xx.xx.xx/username,password;
.LOGTABLE dbname.LOG_tablename;
DATABASE dbname;
.BEGIN EXPORT SESSIONS 2;
.EXPORT OUTFILE D:\test.txt
MODE RECORD format text;
select a.my_date,b.name2,a.value from dbsource.tablesource a
inner join dbname.ANG_tablename b
on a.name1=b.name2
where value=59000
and a.my_date >= 01/12/2015
;
.END EXPORT;
.LOGOFF;
但是好像没用
D:\>bteq < dodol.txt
BTEQ 15.00.00.00 Tue Jan 05 14:40:52 2016 PID: 4452
+---------+---------+---------+---------+---------+---------+---------+----
.LOGMECH LDAP;
+---------+---------+---------+---------+---------+---------+---------+----
.LOGON xx.xx.xx.xx/username,
*** Logon successfully completed.
*** Teradata Database Release is 13.10.07.12
*** Teradata Database Version is 13.10.07.12
*** Transaction Semantics are BTET.
*** Session Character Set Name is 'ASCII'.
*** Total elapsed time was 4 seconds.
+---------+---------+---------+---------+---------+---------+---------+----
.LOGTABLE dbname.LOG_tablename;
*** Error: Unrecognized command 'LOGTABLE'.
+---------+---------+---------+---------+---------+---------+---------+----
DATABASE dbname;
*** New default database accepted.
*** Total elapsed time was 2 seconds.
+---------+---------+---------+---------+---------+---------+---------+----
.BEGIN EXPORT SESSIONS 2;
*** Error: Unrecognized command 'BEGIN'.
+---------+---------+---------+---------+---------+---------+---------+----
.EXPORT OUTFILE D:\test.txt
*** Warning: No data format given. Assuming REPORT carries over.
*** Error: Expected FILE or DDNAME keyword, not 'OUTFILE'.
+---------+---------+---------+---------+---------+---------+---------+----
MODE RECORD format text;
MODE RECORD format text;
$
*** Failure 3706 Syntax error: expected something between the beginning of
the request and the 'MODE' keyword.
Statement# 2, Info =6
*** Total elapsed time was 1 second.
+---------+---------+---------+---------+---------+---------+---------+----
select a.my_date,b.name2,a.value from dbsource.tablesource a
inner join dbname.ANG_tablename b
on a.name1=b.name2
where value=59000
and a.my_date >= 01/12/2015
;
旧 post :
我是 teradata 的新手,我发现 mload 可以上传大数据,现在我有一个问题,是否可以选择使用 cmd ( win7 ) 将数据从 teradata 导出到 xxx.txt
--- sample
select a.data1,b.data2,a.data3 from room1.REPORT_DAILY a
inner join room1.andaikan_saja b
on a.likeme=b.data2
where revenue=30000
and content_id like '%super%'
and a.trx_date >= 01/12/2015
;
这是我的mload up.txt
.LOGMECH LDAP;
.LOGON xx.xx.xx.xx/username,mypassword;
.LOGTABLE mydatabase.LOG_my_table;
SET QUERY_BAND = 'ApplicationName=TD-Subscriber-RechargeLoad; Version=01.00.00.00;' FOR SESSION;
.BEGIN IMPORT MLOAD
TABLES mydatabase.my_table
WORKTABLES mydatabase.WT_my_table
ERRORTABLES mydatabase.ET_my_table mydatabase.UV_my_table;
.LAYOUT LAYOUT_DATA INDICATORS;
.FIELD number * VARCHAR(20);
.DML LABEL DML_INSERT;
INSERT INTO mydatabase.my_table
(
number =:number
);
.IMPORT INFILE "D:\folderdata\data.txt"
LAYOUT LAYOUT_DATA
FORMAT VARTEXT
APPLY DML_INSERT;
.END MLOAD;
.LOGOFF &SYSRC;
我需要将文件导出到我的笔记本电脑的解决方案,就像我放置的脚本一样 ---sample title ....
我使用 teradasql 中的脚本,我正在搜索 cmd 脚本
根据您希望从 Teradata 中提取的数据量,您可以使用 Teradata BTEQ 或 Teradata 并行传输 (TPT) 实用程序以及命令行中的 EXPORT
运算符来提取数据。
TPT 实用程序最终将替代传统的 Teradata 加载和卸载实用程序(FastLoad、MultiLoad、FastExport 和 TPump),并提供一种更简单的机制来通过 FastExport 生成带分隔符的平面文件。对于将大量数据导出到通道或网络连接的客户端,TPT 相当灵活和有效。
Teradata BTEQ 可以执行轻量级加载和卸载功能。 BTEQ 手册非常擅长为您提供有关如何使用各种命令生成 semi-structured 报告或数据提取的概述。它没有生成带分隔符的平面文件的简单命令。如果您查看手册对 EXPORT
命令的概述,您应该对 BTEQ 在使用通道或网络附加客户端时的行为有一个很好的了解。
如果只是几MB和临时导出可以使用SQL助手:在Tools-Options-Export/Import中设置分隔符,也许修改设置Tools-Options-Export 然后在提交 Select 之前点击 File-Export 结果 。 (与 TD Studio 类似)
否则,以可读分隔格式提取数据的最简单方法是 TPT,Export
用于大量数据 (GB) 或 SQL Selector
(MB)。 TPT 适用于大多数操作系统,包括 Windows.
有一个很好的用户指南,里面有很多示例脚本:
Job Example 12: Extracting Rows and Sending Them in Delimited Format
在您的情况下,您将定义一个 通用模板文件,如下所示:
DEFINE JOB EXPORT_DELIMITED_FILE
DESCRIPTION 'Export rows from a Teradata table to a delimited file'
(
APPLY TO OPERATOR ($FILE_WRITER() ATTR (Format = 'DELIMITED'))
SELECT * FROM OPERATOR ($SELECTOR ATTR (SelectStmt = @ExportSelectStmt));
);
将 $SELECTOR
更改为 $EXPORT
以获得更大的导出。
那么你只需要一个像这样的工作变量文件:
SourceTdpId = 'your system'
,SourceUserName = 'your user'
,SourceUserPassword = 'your password'
,FileWriterFileName = 'xxx.txt'
,ExportSelectStmt = 'select a.data1,b.data2,a.data3 from room1.REPORT_DAILY a
inner join room1.andaikan_saja b
on a.likeme=b.data2
where revenue=30000
and content_id like ''%super%''
and a.trx_date >= DATE ''2015-12-01'' -- modified this to a valid date literal
;'
唯一不好的部分是您必须将 select 中的任何单引号加倍,例如'%super%' -> ''%super%''
.
最后你运行一个cmd
:
tbuild -f your_template_file -v your_job_var_file
新 post : 我已经阅读了教程并且找到了这个脚本
.LOGMECH LDAP;
.LOGON xx.xx.xx.xx/username,password;
.LOGTABLE dbname.LOG_tablename;
DATABASE dbname;
.BEGIN EXPORT SESSIONS 2;
.EXPORT OUTFILE D:\test.txt
MODE RECORD format text;
select a.my_date,b.name2,a.value from dbsource.tablesource a
inner join dbname.ANG_tablename b
on a.name1=b.name2
where value=59000
and a.my_date >= 01/12/2015
;
.END EXPORT;
.LOGOFF;
但是好像没用
D:\>bteq < dodol.txt
BTEQ 15.00.00.00 Tue Jan 05 14:40:52 2016 PID: 4452
+---------+---------+---------+---------+---------+---------+---------+----
.LOGMECH LDAP;
+---------+---------+---------+---------+---------+---------+---------+----
.LOGON xx.xx.xx.xx/username,
*** Logon successfully completed.
*** Teradata Database Release is 13.10.07.12
*** Teradata Database Version is 13.10.07.12
*** Transaction Semantics are BTET.
*** Session Character Set Name is 'ASCII'.
*** Total elapsed time was 4 seconds.
+---------+---------+---------+---------+---------+---------+---------+----
.LOGTABLE dbname.LOG_tablename;
*** Error: Unrecognized command 'LOGTABLE'.
+---------+---------+---------+---------+---------+---------+---------+----
DATABASE dbname;
*** New default database accepted.
*** Total elapsed time was 2 seconds.
+---------+---------+---------+---------+---------+---------+---------+----
.BEGIN EXPORT SESSIONS 2;
*** Error: Unrecognized command 'BEGIN'.
+---------+---------+---------+---------+---------+---------+---------+----
.EXPORT OUTFILE D:\test.txt
*** Warning: No data format given. Assuming REPORT carries over.
*** Error: Expected FILE or DDNAME keyword, not 'OUTFILE'.
+---------+---------+---------+---------+---------+---------+---------+----
MODE RECORD format text;
MODE RECORD format text;
$
*** Failure 3706 Syntax error: expected something between the beginning of
the request and the 'MODE' keyword.
Statement# 2, Info =6
*** Total elapsed time was 1 second.
+---------+---------+---------+---------+---------+---------+---------+----
select a.my_date,b.name2,a.value from dbsource.tablesource a
inner join dbname.ANG_tablename b
on a.name1=b.name2
where value=59000
and a.my_date >= 01/12/2015
;
旧 post :
我是 teradata 的新手,我发现 mload 可以上传大数据,现在我有一个问题,是否可以选择使用 cmd ( win7 ) 将数据从 teradata 导出到 xxx.txt
--- sample
select a.data1,b.data2,a.data3 from room1.REPORT_DAILY a
inner join room1.andaikan_saja b
on a.likeme=b.data2
where revenue=30000
and content_id like '%super%'
and a.trx_date >= 01/12/2015
;
这是我的mload up.txt
.LOGMECH LDAP;
.LOGON xx.xx.xx.xx/username,mypassword;
.LOGTABLE mydatabase.LOG_my_table;
SET QUERY_BAND = 'ApplicationName=TD-Subscriber-RechargeLoad; Version=01.00.00.00;' FOR SESSION;
.BEGIN IMPORT MLOAD
TABLES mydatabase.my_table
WORKTABLES mydatabase.WT_my_table
ERRORTABLES mydatabase.ET_my_table mydatabase.UV_my_table;
.LAYOUT LAYOUT_DATA INDICATORS;
.FIELD number * VARCHAR(20);
.DML LABEL DML_INSERT;
INSERT INTO mydatabase.my_table
(
number =:number
);
.IMPORT INFILE "D:\folderdata\data.txt"
LAYOUT LAYOUT_DATA
FORMAT VARTEXT
APPLY DML_INSERT;
.END MLOAD;
.LOGOFF &SYSRC;
我需要将文件导出到我的笔记本电脑的解决方案,就像我放置的脚本一样 ---sample title .... 我使用 teradasql 中的脚本,我正在搜索 cmd 脚本
根据您希望从 Teradata 中提取的数据量,您可以使用 Teradata BTEQ 或 Teradata 并行传输 (TPT) 实用程序以及命令行中的 EXPORT
运算符来提取数据。
TPT 实用程序最终将替代传统的 Teradata 加载和卸载实用程序(FastLoad、MultiLoad、FastExport 和 TPump),并提供一种更简单的机制来通过 FastExport 生成带分隔符的平面文件。对于将大量数据导出到通道或网络连接的客户端,TPT 相当灵活和有效。
Teradata BTEQ 可以执行轻量级加载和卸载功能。 BTEQ 手册非常擅长为您提供有关如何使用各种命令生成 semi-structured 报告或数据提取的概述。它没有生成带分隔符的平面文件的简单命令。如果您查看手册对 EXPORT
命令的概述,您应该对 BTEQ 在使用通道或网络附加客户端时的行为有一个很好的了解。
如果只是几MB和临时导出可以使用SQL助手:在Tools-Options-Export/Import中设置分隔符,也许修改设置Tools-Options-Export 然后在提交 Select 之前点击 File-Export 结果 。 (与 TD Studio 类似)
否则,以可读分隔格式提取数据的最简单方法是 TPT,Export
用于大量数据 (GB) 或 SQL Selector
(MB)。 TPT 适用于大多数操作系统,包括 Windows.
有一个很好的用户指南,里面有很多示例脚本: Job Example 12: Extracting Rows and Sending Them in Delimited Format
在您的情况下,您将定义一个 通用模板文件,如下所示:
DEFINE JOB EXPORT_DELIMITED_FILE
DESCRIPTION 'Export rows from a Teradata table to a delimited file'
(
APPLY TO OPERATOR ($FILE_WRITER() ATTR (Format = 'DELIMITED'))
SELECT * FROM OPERATOR ($SELECTOR ATTR (SelectStmt = @ExportSelectStmt));
);
将 $SELECTOR
更改为 $EXPORT
以获得更大的导出。
那么你只需要一个像这样的工作变量文件:
SourceTdpId = 'your system'
,SourceUserName = 'your user'
,SourceUserPassword = 'your password'
,FileWriterFileName = 'xxx.txt'
,ExportSelectStmt = 'select a.data1,b.data2,a.data3 from room1.REPORT_DAILY a
inner join room1.andaikan_saja b
on a.likeme=b.data2
where revenue=30000
and content_id like ''%super%''
and a.trx_date >= DATE ''2015-12-01'' -- modified this to a valid date literal
;'
唯一不好的部分是您必须将 select 中的任何单引号加倍,例如'%super%' -> ''%super%''
.
最后你运行一个cmd
:
tbuild -f your_template_file -v your_job_var_file