使用批处理脚本解析文本文件并从每行中删除前 2 个字符

Parse a text file using batch script and remove the first 2 characters from each line

我一直在尝试从 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
)

我试过上面的代码删除这两个字符。

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

对于更大数量的行,使用 Teradata Parallel Transporter (TPT) 导出为分隔文本(无需显式串联或之后更改文件。

对于少量行,使用 BTEQ EXPORT 和 REPORT 格式。