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