Мне нужно вставить 40 миллионов записей из файла .csv
в базу данных, а ниже - процесс, за которым я последовал.Каков правильный способ вставить миллионы записей из файла csv в базу данных SQL Server?
Windows Service 1:
- Чтение CSV
- проверки записей
- вставки действительных записей в таблице успеха (промежуточный стол) с использованием
SqlBulkCopy
.
Windows Service 2.
- Получение 10 000 записей из таблицы успеха в то время
- работает Еогеасп для этих 10 000
- представляемых каждую запись в базу данных для вставки в основном Таблица.
Windows Service 1 занимает около 30-40 мин, а окна обслуживания 2 занимает около 5 часов, чтобы выполнить поставленную задачу (минимальное время). У меня есть 2 способа сделать это, но не могу решить, что лучше и открыто для предложений.
- Создание 4 отдельные службы окон и обработки 40000 записей одновременно
- Используя часы задания можно использовать в то время как цикл
- Вызов процедуры асинхр из окон службы
Мое самое большое сомнение в том, что мы используют транзакции в процедуре и будут асинхронно работать с ней, потому что в соответствии с моим допущением с использованием блокировок транзакций таблица и другой процесс должны работать над этим.
Миллионы? SqlBulkCopy - единственный. 'запуск foreach', вероятно, является слабым местом. Если вы используете курсоры, переписывайте запрос так, чтобы он был установлен на основе. –
Мы используем sqlbulkcopy в службе 1 Windows, но мы выполняем определенную проверку во второй процедуре обслуживания Windows, поэтому не можем использовать bulkcopy. Другое дело, что она заключается в том, что, когда мы используем массовую копию, можно предположить, что набор из 1 lakh записей будет вставлен одновременно используя объемную копию sql, тогда даже если одна запись не удалась, мне нужно зарегистрировать это или по крайней мере нужно знать, какая запись имеет эту ошибку, следовательно, это невозможно с помощью bulkcopy. – sainath
Бит, если используется другой подход, но это ничего не значит для SSIS?У служб интеграции есть встроенная вставка, в которой вы можете преобразовать середину. Я очень сомневаюсь, что в SSIS понадобится более часа. – Caz1224