使用批处理脚本解析文本文件并从每行中删除前 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 格式。
我一直在尝试从 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 格式。