Published on

March 10, 2008

Обработка нестандартных входных файлов в SQL Server

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

Давайте рассмотрим пример файла данных со следующей структурой:

Col1 Col2 Col3
xxx start
x y z
x y z
x y z
xxx end

В этом файле записи “x,y,z” являются важными, вместе с заголовками столбцов. Проблема возникает из-за того, что метаданные строки не следуют тому же формату, что и строки данных. Метаданные строки имеют только один столбец, “xxx start” и “xxx end”, без каких-либо разделителей запятой. С другой стороны, строки данных определяются как “x,y,z”.

Существуют различные технические решения для решения этой проблемы, такие как использование задачи скрипта или условного разделения. Однако в этой статье мы сосредоточимся на простом и без кода подходе, который обеспечивает легкую поддержку пакета.

Вот как мы можем решить эту проблему:

  1. Импортируйте весь файл во временную таблицу с использованием источника Flat File с форматом “Ragged right”. Определите один столбец длиной 8000 символов. Имя этого столбца не имеет значения, так как это просто заполнитель. Импортируйте данные во временную таблицу с одним столбцом, определенным как varchar(8000). Это гарантирует успешный импорт всего файла, включая проблемные строки.
  2. Удалите лишние строки из временной таблицы. В этом случае можно использовать простое выражение DELETE с условием WHERE, так как длина проблемных строк постоянна и меньше, чем у обычной строки данных. При необходимости вы можете фильтровать строки с помощью разделителей столбцов или попробовать использовать столбец идентификатора в таблице для идентификации проблемных строк.
  3. Экспортируйте оставшиеся строки во временный файл. Определите пункт назначения Flat File с форматом “Ragged right”, снова с одним столбцом. Используйте временную таблицу в качестве источника и экспортируйте данные из нее во временный Flat File.
  4. Наконец, обработайте временный файл как стандартный Flat File и импортируйте его как обычно в другую задачу потока данных. Это позволяет дизайнеру определить имена столбцов из исходного файла. Хотя это добавляет несколько задач потока данных в пакет, процесс остается простым и прозрачным.

Следуя этому подходу, вы можете инкапсулировать весь процесс в одном пакете без необходимости внешних скриптов или дополнительных зависимостей. Это гарантирует, что пакет легко поддерживается и может быть развернут как отдельный файл dtsx при переходе между средами.

В заключение, обработка нестандартных входных файлов в SQL Server может быть сложной, но с правильным подходом она может быть упрощена и сделана более эффективной. Используя временную таблицу и простой процесс потока данных, вы можете обрабатывать файлы с метаданными строками как в начале, так и в конце, позволяя дизайнеру определить имена столбцов из исходного файла. Этот подход обеспечивает чистое и поддерживаемое решение для обработки нестандартных входных файлов в SQL Server.

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.