1

我一直在尝试从 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 个字符。

4

1 回答 1

3

您导出的数据是 VARCHAR,因此前两个字节是字符串的二进制长度。不要解析/修复 FastExport 输出文件,而是使用不同的工具来导出数据。

对于大量行,使用 Teradata Parallel Transporter ( TPT ) 导出为分隔文本(无需显式连接或事后更改文件。

对于少量行,使用带有 REPORT 格式的BTEQ EXPORT 。

于 2021-02-24T16:53:12.720 回答