Проанализируйте текстовый файл с помощью пакетного скрипта и удалите первые 2 символа из каждой строки

#windows #batch-file #teradata #fastexport

#Windows #пакетный файл #teradata #fastexport

Вопрос:

Я пытался проанализировать данные из текстового файла, который генерируется утилитой быстрого экспорта 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 символов.

Комментарии:

1. Ваши экспортированные данные имеют формат VARCHAR, поэтому первые два байта представляют собой двоичную длину строки. Вместо того, чтобы пытаться исправить это на клиенте, используйте TPT (Teradata Parallel Transporter) для экспорта в виде текста с разделителями. Или еще лучше, поскольку кажется, что количество экспортируемых строк будет очень маленьким, используйте экспорт BTEQ (в формате отчета / режиме поля).

2. @Fred, было бы полезно, если бы вы могли записать это в качестве ответа.

3. Спасибо @Fred. Вы точно указали на основную причину, и это помогло.

Ответ №1:

Ваши экспортированные данные имеют формат VARCHAR, поэтому первые два байта представляют собой двоичную длину строки. Вместо синтаксического анализа / исправления выходного файла FastExport используйте другой инструмент для экспорта данных.

Для большего количества строк используйте Teradata Parallel Transporter (TPT) для экспорта в виде текста с разделителями (без необходимости явной конкатенации или последующего изменения файла.

Для небольшого количества строк используйте ЭКСПОРТ BTEQ в формате ОТЧЕТА.