#sql #entity-framework #ssis #refactoring-databases #linq-to-excel
#sql #entity-framework #ssis #рефакторинг-базы данных #linq-to-excel
Вопрос:
Итак, у меня есть несколько таблиц с большим количеством данных. Допустим, это таблицы A, B и C. Я хочу добавить поля идентификатора автоматического увеличения для каждой из этих таблиц, нормализовать их, поменяв местами некоторые поля между таблицами и добавив дополнительную таблицу D. Gulp. Есть три цели: 1) редизайн базы данных и перезагрузка существующих данных. 2) Включите загрузку данных из электронной таблицы для добавления / редактирования / удаления четырех таблиц. 3) Включите веб-интерфейс для добавления / редактирования / удаления четырех таблиц.
Мой текущий подход:
- Я думал, что экспортирую плоский файл для всех данных из 3 существующих таблиц в csv (электронную таблицу).
- Затем реорганизуйте структуру проектирования базы данных
- Затем используйте linq to Excel для обратного чтения записей электронной таблицы csv в объекты dto
- Затем используйте Entity Framework для преобразования этих объектов dto в сущности, чтобы обновить базу данных соответствующими связями между таблицами
- Электронная таблица будет повторно использоваться для будущего добавления / редактирования / удаления массовых данных
Как насчет следующих инструментов? SSIS массово вставляют хранимые процедуры
Я слишком усложняю это? Есть ли способ лучше?
Ответ №1:
Каково ваше определение «большого количества данных»? Для некоторых людей это 10000 строк, для других — миллиарды строк.
Я бы подумал, что несколько хранимых процедур должны быть в состоянии выполнить трюк, в основном состоящий из простых инструкций INSERT .. SELECT . Используйте sp_rename
для переименования существующих таблиц, создания ваших новых таблиц, затем перемещения данных.
Если вам уже нужно разработать процесс массового импорта, тогда, возможно, имеет смысл использовать его повторно, выполнив экспорт, но я бы не стал создавать весь этот процесс только для этого сценария.
Могут быть случаи, когда этот подход не самый лучший, но я не вижу в вашем вопросе ничего, что заставляет меня думать, что это было бы проблемой.
Конечно, сначала убедитесь, что у вас есть хорошая резервная копия.
Комментарии:
1. Размер данных достаточно велик, чтобы захотеть автоматизировать, и не настолько велик, чтобы быть проблемой при экспорте / импорте.
2. Если вы добавите процесс импорта / экспорта, это просто еще одна движущаяся часть, которую нужно сломать. Теперь, если по какой-либо причине данные в экспортированном файле неверны (строки, заключенные в кавычки, неправильно обработаны или что-то еще), у вас возникают дополнительные головные боли без причины.