Мы разрабатываем импорт данных из внешнего источника, такого как MAS200, в нашу производственную базу данных SQL Server 2005/2008. Источником будет транзакционная база данных, защищенная/изолированная. Нам нужно синхронизировать нашу базу данных с источником, поэтому ожидается периодическая синхронизация данных.
Нам предоставляется свобода запрашивать исходные данные любого типа — например, в виде файлов CSV, txt или даже иметь исходные данные в другой базе данных SQL, которая имеет аналогичную структуру. Нам нужно выбрать лучший способ импорта данных — он будет периодическим и может выполняться ежечасно или ежедневно.
Основываясь на своем опыте, я считаю, что наличие исходных данных в базе данных SQL может быть лучшим способом начать работу. Вот грубый дизайн того, что мы получили до сих пор -
- Периодически исходная БД будет заполняться извне (не с нашей стороны)
- Предварительная обработка: полировка данных исходной таблицы (например, обрезка, поиск) — общее форматирование и преобразование данных.
- Fetch: создайте КУРСОР для циклического просмотра записей. Мы планируем обновить существующие данные и вставить новые, поэтому нам потребуется как минимум два цикла CURSOR один за другим.
- Заполнить: в цикле КУРСОР записи будут обновляться/вставляться.
- Постобработка: еще раз последние штрихи и сопоставление поиска (например, замена кода на идентификатор)
- Проверка. Наконец, запустите проверку согласованности таблиц, чтобы убедиться в целостности импортируемых данных.
Подводя итог, мы собираемся разбить шаги в хранимых процедурах, а затем создать задание SQL, которое будет выполнять эти шаги один за другим. Я знаю, что есть много способов сделать это, SSIS, мастер импорта данных и т. д., но мы должны сделать его достаточно простым, легко переносимым, менее зависимым и гибким для будущих изменений.
ПРИМЕЧАНИЕ. Данные будут огромными — в последний раз, когда у нас была аналогичная настройка, для завершения всего процесса импорта данных потребовалось несколько минут, например, почти 20-25 минут, поэтому мы запланировали почасовой импорт данных.
Спасибо.
ОБНОВЛЕНИЕ №1: я понимаю, что лучше использовать команду MERGE. Но если я должен создать его для SQL Server 2005? Я считаю, что это работает с 2008 года. Я нашел ссылку -
http://sqlserver-tips.blogspot.com/2006/09/mimicking-merge-statement-in-sql.html
Какие еще идеи на 2005 год?