2014-10-17 5 views
3

У меня есть файл с плоскими файлами из тысяч записей (> 100K в некоторых случаях). Этот источник поставляется снаружи, и я не могу запросить ревизию макета.Строка строчной структуры источника SSIS

В этом плоском файле, каждая строка содержит четыре колонки:

| User ID  | Status_1 | Status_2 | Status_3 
| 1337  | Green  | Yellow | Red 
| 1234  | Red  | Red  | Green 

В таблице назначения была разработана, чтобы принять две колонки:

| User ID  | Status Codes 
| 1337  | Green 
| 1337  | Yellow 
| 1337  | Red 
| 1234  | Red 
| 1234  | Red 
| 1234  | Green 

До сих пор я был запущен 3 различных пакетов SSIS в таблицу назначения, по одному для каждого столбца состояния в плоском файле.

Я хотел бы использовать один пакет SSIS и создать либо другое Flat File Destination, либо Temp Table, чтобы зеркалировать таблицу назначения и импортировать оттуда.

Возможно ли это? Если да, то каковы наилучшие практические задачи, а не просто UPDATE & SET в таблице темпов.

+1

Spitballing это здесь, но будет ли многолистный компонент для 3 различных компонентов OLE DB Destination, попав в ту же таблицу, решить эту проблему? – billinkc

+0

@billinkc Вы можете быть правы. Я все еще изучаю, как использовать эти компоненты, поэтому я сделаю это. – Phoenix

ответ

1

heh выглядит как случай для хорошего ole SQL. Я бы использовал UNPIVOT на этом.

http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

Эта связь имеет хороший пример, который очень похож на ваши данные:

--Create the table and insert values as portrayed in the previous example. 
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int, 
    Emp3 int, Emp4 int, Emp5 int); 
GO 
INSERT INTO pvt VALUES (1,4,3,5,4,4); 
INSERT INTO pvt VALUES (2,4,1,5,5,5); 
INSERT INTO pvt VALUES (3,4,3,5,4,4); 
INSERT INTO pvt VALUES (4,4,2,5,5,4); 
INSERT INTO pvt VALUES (5,5,1,5,5,5); 
GO 
--Unpivot the table. 
SELECT VendorID, Employee, Orders 
FROM 
    (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5 
    FROM pvt) p 
UNPIVOT 
    (Orders FOR Employee IN 
     (Emp1, Emp2, Emp3, Emp4, Emp5) 
)AS unpvt; 
GO 

Назад, когда я был хранение данных, половина моя работа, казалось, как это было с помощью UNPIVOT на дерьмо I данных прошли через электронные таблицы.

+0

Да, это именно то, что мне нужно. Спасибо! :) – Phoenix

Смежные вопросы