【发布时间】:2023-03-14 19:33:01
【问题描述】:
我一直在尝试从 Teradata 快速导出实用程序生成的文本文件中解析数据。 数据如下所示:
Type2LRF|84|249
Job3|86|327
StageTOStageBackUp|85|327
当我检查了最初存在的垃圾字符的字符数时,它是 2。 我一直在尝试解析文本文件以删除前 2 个字符并从中生成一个新的文本文件。
新文件应如下所示:
Type2LRF|84|249
Job3|86|327
StageTOStageBackUp|85|327
我正在尝试添加前 2 个字符,但它们在上面的块中没有正确显示。
我使用的Teradata快速导出代码是:
.LOGTABLE Informatica_Test.JobControlExport_log;
.LOGON server_name/dbc,dbc;
DATABASE Informatica_Test;
.BEGIN EXPORT SESSIONS 2;
.EXPORT OUTFILE "data.txt"
MODE RECORD FORMAT TEXT;
SELECT ((TRIM((COALESCE(J.JobName,''))))
||'|'||
(TRIM((COALESCE(JC.JobControlID,''))))
||'|'||
(TRIM((COALESCE(JC.Success_Source_Rows,''))))
)(TITLE '') from
Informatica_Test.JobControl JC
JOIN Informatica_Test.Job J
ON J.JobID = JC.JobID
JOIN Informatica_Test.BatchControl BC
ON BC.BatchControlID = JC.BatchCtrlID
where BC.BatchID = 1 -- This will be a parameter
and BC.EndDatetime = (select max(EndDatetime) from Informatica_Test.BatchControl);
.END EXPORT;
.LOGOFF;
@echo off
setlocal enabledelayedexpansion
break>test.txt
for /F "tokens=*" %%A in (data.txt) do (
set line=%%A
echo !line:~2! >>test.txt
)
我已尝试使用上述代码删除 2 个字符。
【问题讨论】:
-
您导出的数据是 VARCHAR,因此前两个字节是字符串的二进制长度。与其尝试在客户端上对其进行修补,不如使用 TPT(Teradata Parallel Transporter)导出为分隔文本。或者更好的是,由于导出的行数看起来非常少,请使用 BTEQ 导出(在报告格式/字段模式下)。
-
@Fred,如果你能把它写下来作为答案会很有帮助。
-
谢谢@Fred。您已经准确地指出了根本原因并且它有所帮助。
标签: windows batch-file teradata fastexport