Похоже, что в одном плоском файле предоставляются 2 таблицы данных. Из изображения, похоже, обе таблицы имеют и другую структуру данных. Я думаю, сложно загрузить файл за один шаг.
Возможно, эти шаги помогут вам.
Шаг 1. Загрузите все данные в таблицу (укажите в таблице с именем [Table]
). Нагрузка в том числе column headers
.DATA может выглядеть следующим образом (только шаблон как пример.) В этой таблице убедитесь, что вы добавляете колонку инкремента
Шаг 2. Запрос, как показано ниже поможет вам идентифицировать из в какой строке начинается вторая таблица.
Select Top 1 Column0 From [Table] Where Column1 = '%F' Order By Column0 Desc
В вашем пакете SSIS, добавить переменную для хранения результата выше
Шаг 3. Добавьте ДПФ с источником, как [Table].
После источника добавить условное разделение.
If Column0 < variable value, sent row to [Table1]
else to [Table2]
Может быть еще несколько изменений.
Добавлено согласно комментарий:
Если у вас есть более чем 1 стол.
Ставка 1. Загрузите все данные в одну таблицу.
Ставка 2. Добавьте дополнительный столбец ([columnX] на изображении). Его ценность должна быть такой, чтобы с ней вы могли идентифицировать таблицу.
шаг 3. Используйте само условное разделение, используя columnX, сопоставляя каждую строку с соответствующей таблицей.
По желанию, добавил редактирование: использовать логику как this..Run сценарий в SSMS и увидеть результат.
Declare @table table (id int identity(1,1),Col1 varchar(5), ColX int)
Insert into @table (Col1) Values
('%F'),('%R'),('%R'),('%R'),('%R'),('%R'),('%R'),
('%F'),('%R'),('%R'),('%R'),('%R'),('%R'),('%R'),
('%F'),('%R'),('%R'),('%R'),('%R')
Select *
from @table A
Update Y
Set ColX = Z.X
From @table Y Join(
Select A.id FromId,B.id ToId,A.X From
(
Select id,ROW_NUMBER() Over (Order By id) X From (
Select id from @table Where Col1 = '%F'
Union
Select max(id) id From @table) Lu) A,
(
Select id,ROW_NUMBER() Over (Order By id) X From (
Select id from @table Where Col1 = '%F'
Union
Select max(id) id From @table) Lu) B
Where A.X = B.X - 1) Z On Y.id >= Z.FromId and Y.id < Z.ToId
Select *
from @table A
Select *
from @table A
Обращайтесь за помощью. –
Спасибо! но проблема в том, что в плоском файле есть более двух таблиц. Примерно 10-20 таблиц в файле. И в какой-то таблице больше столбцов, чем остальные. Пример. 1-я таблица имеет 10 таблиц, а вторая таблица имеет 6 столбцов, которые оставили четыре столбца равными нулю, но если 3-я таблица больше 10, остальные столбцы переносятся на последний столбец [9]. Поскольку чтение столбцов было основано на первой таблице, которая содержит 10 столбцов –
, см. Комментарий –