#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 в формате ОТЧЕТА.