Объединить CSV-файл с таблицей БД

Мне приходится ежедневно загружать много данных из файлов в таблицу базы данных. Данные находятся вне ERP-системы и содержат 5 000 000 записей и доставляются в файлах csv размером до 500 МБ. Уже есть задача службы интеграции, которая отвечает за это и преобразование, проверку данных и импорт в другую систему. Я забыл сказать, что нет единого столбца идентификаторов, иначе это было бы легко. (от 3 до 7 столбцов идентификаторов) Также невозможно, чтобы система ERP предоставляла только данные, которые изменились с момента последнего выполнения.

Проблема заключается в том, чтобы улучшить слияние файлов csv в таблицу данных. Таблица должна все время хранить все данные предыдущего выполнения.

Из-за плохой производительности я должен возобновить этот импорт. Было подтверждено следующее решение:

  • TSQL-Merge: действительно плохая производительность, импорт займет слишком много времени
  • Пользовательская задача DTS: мне нужно знать, какая запись является новой, обновленной или удаленной. Только загрузка таблицы db и csv вызвала исключение OutOfMemoryException
  • Сравните файл вне служб интеграции с предыдущим файлом и импортируйте только дельту. Это хорошее решение, но на самом деле у нас много ошибок, потому что файл отличается от предыдущей загрузки.

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

Спасибо за совет!

MH


person MH2106    schedule 08.12.2014    source источник
comment
Вы имеете в виду, что в формате файла CSV нет определенного шаблона. Вы имеете в виду, что вы всегда получаете другой столбец. Я не уверен, но вы можете получить OutOfMemoryException по нескольким причинам. Просто погуглите и проверьте. Сколько таблиц вы используете в этом процессе?   -  person KumarHarsh    schedule 08.12.2014
comment
Можно ли удалить записи таблицы, которые вы заменяете, возможно, используя столбец даты и времени, а затем просто импортировать их все?   -  person Tab Alleman    schedule 08.12.2014
comment
@KumarHarsh: проблема не в OutOfMemoryException, я понимаю это из-за записей в обоих наборах данных.   -  person MH2106    schedule 08.12.2014
comment
@Tab Alleman: я не могу удалить их напрямую, но стоит подумать об этом. :)   -  person MH2106    schedule 08.12.2014


Ответы (1)


Я еще не начал реализацию, но после того, как я поговорил со специалистом по службам интеграции, это лучшее решение для решения этой проблемы с помощью временной таблицы и поиска. Сначала вам нужно создать временную таблицу с TSQL-задачей, а затем вставить записи файла с помощью обычной задачи копирования. При поиске вы решаете, является ли это вставкой или обновлением.

В ближайшие две недели я буду работать над реализацией, так что не стесняйтесь спрашивать меня о дальнейших подробностях.

person MH2106    schedule 14.12.2014