Published on

March 30, 2021

Преобразование данных EBCDIC в SQL Server Integration Services

Вы когда-нибудь сталкивались с проблемой импорта текстового файла в формате EBCDIC в базу данных SQL Server? Если да, то вы знаете, что это может быть довольно сложно. В этой статье мы рассмотрим, как преобразовать данные EBCDIC на лету с помощью задачи потока данных с трансформацией сценария в SQL Server Integration Services (SSIS).

Понимание EBCDIC и его проблемы

EBCDIC (Extended Binary Coded Decimal Interchange Code) – это кодировка символов, используемая в системах на основе мейнфреймов. Он представляет десятичные цифры с фиксированным количеством битов, обычно 8 для несжатых чисел и 4 для сжатых или упакованных. Работа с данными EBCDIC может быть сложной, особенно при работе с двоичными полями или знаковыми десятичными числами.

При работе с знаковыми десятичными числами в EBCDIC знак кодируется в старшем разряде первого байта. Положительные числа представлены символами “A-I”, а отрицательные числа – символами “J-R”. Число ноль представлено символами “{” и “}”.

Кроме того, если файл передается по FTP, это можно сделать в двух разных режимах: двоичном или ASCII. Режим ASCII переводит данные на основе их символьного значения, что означает, что двоичные значения отличаются между источником и местом назначения.

Использование трансформации сценария в SSIS

SSIS предоставляет два варианта сценариев: задачу сценария и компонент сценария. Задача сценария используется в качестве задачи управления потоком, а компонент сценария используется в качестве трансформации потока данных. В этой статье мы сосредоточимся на компоненте сценария.

Компонент сценария позволяет расширить функциональность SSIS с помощью пользовательского кода .NET. Мы можем использовать эту функцию для преобразования данных EBCDIC в ASCII на лету. Написав пользовательский код на Visual Basic, мы можем выполнить необходимые преобразования для преобразования данных.

Пример: преобразование данных EBCDIC в SSIS

Давайте рассмотрим пример преобразования данных EBCDIC в SSIS. Мы создадим образец базы данных и таблицу для загрузки данных. Затем мы настроим задачу потока данных с подключением к файлу EBCDIC и подключением OLEDB к нашей образцовой базе данных.

Затем мы настроим подключение к файлу с фиксированным форматом ширины и кодовой страницей ANSI. Мы также установим разделитель строк на {CR}{LF}. Поскольку числовые поля в файле EBCDIC заканчиваются буквой, мы будем использовать расширенный вид для настройки макета нашего текстового файла.

В компоненте сценария мы напишем пользовательский код для выполнения необходимых преобразований. Мы будем использовать таблицу перевода для преобразования символов EBCDIC в их эквиваленты ASCII. Мы также включим функции для преобразования зонных чисел в десятичные и наоборот.

После выполнения пакета мы можем выполнить SELECT на таблице назначения и проверить, что данные EBCDIC успешно преобразованы в ASCII.

Заключение

Преобразование данных EBCDIC в SQL Server Integration Services может быть сложной задачей, особенно при работе с двоичными полями или знаковыми десятичными числами. Однако, используя компонент сценария и написание пользовательского кода .NET, мы можем преодолеть эти проблемы и успешно преобразовать данные EBCDIC в ASCII на лету.

Понимая концепции и техники, рассмотренные в этой статье, вы будете хорошо подготовлены для работы с данными EBCDIC в ваших проектах SSIS.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.