2010-11-23 3 views
0

У меня есть. CSV-файл, который поворачивается в 6 миллионов строк во время пакета SSIS. У меня есть таблица в SQLServer 2005 из 25 миллионов + строк. Файл .csv имеет данные, которые дублируют данные в таблице, возможно ли, чтобы строки обновлялись, если они уже существуют или что было бы лучшим способом для достижения этой эффективности?Можно ли перезаписать вставку SSIS или подобное?

ответ

5

Сравнение строк 6м с 25-метровыми рядами не будет слишком эффективным с помощью поиска или компонента потока данных SQL-команды, вызываемого для каждой строки, чтобы выполнить upsert. В этих случаях иногда наиболее эффективно быстро загружать их в промежуточную таблицу и использовать одну командную команду SQL для выполнения upsert.

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

+0

Очень хорошая точка, задача поиска, вероятно, будет медленной с таким количеством строк. Staging & SQL - хороший вариант. – grapefruitmoon 2010-11-23 16:46:42

2

Если вы не против потери старых данных (то есть последний файл имеет значение, а не то, что находится в таблице), вы можете удалить все записи в таблице и вставить их снова.

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

1

Вы можете использовать задачу поиска, чтобы идентифицировать любые соответствующие строки в CSV и таблице, а затем передать результат этого в другую таблицу или поток данных и использовать задачу SQL для выполнения требуемого обновления.

Смежные вопросы