Службы интеграции SQL2008 - загрузка файлов CSV с изменяющейся файловой схемой - PullRequest
1 голос
/ 22 ноября 2010

Я использую SQL2008 для загрузки данных датчика в таблицу с помощью служб Integration Services.Мне приходится иметь дело с сотнями файлов.Проблема в том, что все CSV-файлы имеют немного разные схемы.Каждый файл может иметь максимум 20 полей данных.Все файлы данных имеют эти общие поля.Некоторые файлы имеют все поля, другие имеют некоторые поля.Кроме того, порядок полей может варьироваться.

Вот и пример того, как выглядят схемы файлов.Название станции, ID станции, LOCAL_DATE, T_1, TD_1, RH_1, CL_1, RS_1, RI_1, PR_1, RD_1, SH_1, CL_2 Название станции, ID станции, LOCAL_DATE, T_1, TD_1, RH_1, CL_1, RS_1, R__1, PR_, WD_1, WSM_1, WDM_1, SH_1 Название станции, ID станции, LOCAL_DATE, T_1, TD_1, RH_1, RS_1, RI_1, PR_1, RD_1, WS_1, WD_1, WSM_1, WDM_1 Имя станции, ID станции, LOCAL_DATE, T__1, PR_1, VI_1, PW_1, WS_1, WD_1, WSM_1 Название станции, ID станции, LOCAL_DATE, T_1, RH_1, RS_1, WS_1, WD_1, WSM_1 Название станции, ID станции, LOCAL_DATE, T_1, RH_1, RS_1, WS_1, VI_1, WD_1, WSM_1

Я использую задачу сценария потока данных для обработки данных через CreateNewOutputRows () и MyOutputBuffer.AddRow ().У меня есть рабочий пакет для загрузки данных, однако он ненадежен и надежен, потому что, поскольку у меня было больше файлов, пакет завершился ошибкой, потому что файловая схема не была определена в CreateNewOutputRows ().

Я ищу динамическое решение, которое может справиться с изменением схемы файла.У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 22 ноября 2010

Может быть, команда cmd хороша. в cmd вы можете использовать sqlserver import csv.

0 голосов
/ 22 ноября 2010

Если файлы CSV, которые имеют все идентичные форматы, используют одинаковое соглашение об именах файлов или если их можно каким-то образом отделить, вы можете использовать контейнер циклов ForEach для каждого типа файловой схемы.

Возможным способом выделения файлов CSV является запуск сценария (в VB) в службах SSIS, который считывает первую строку файла CSV и проверяет различные типы (если имена столбцов находятся в первой строке), а затем перемещается файлы в соответствующую папку для использования в контейнере циклов ForEach.

0 голосов
/ 22 ноября 2010

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

Если вы можете влиять или контролировать развитие схем для файлов CSV, попробуйте придуматьархитектура данных верхнего уровня.В старые добрые времена до появления баз данных файлы, состоящие из записей, часто имели в качестве первого поля каждой записи «тип записи».CSV-файлы могут быть организованы таким же образом.Первое поле каждой записи может указывать, с каким типом записи вы имеете дело.Когда вы получите неизвестный тип, поместите его в «неверный входной файл», пока не сможете поддерживать свое программное обеспечение.

Если этого недостаточно для вас, вам, возможно, придется подумать об искусственном интеллекте или искать другую работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...