Редизайн базы данных с последующей перезагрузкой с использованием linq to excel и entity framework

#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. Если вы добавите процесс импорта / экспорта, это просто еще одна движущаяся часть, которую нужно сломать. Теперь, если по какой-либо причине данные в экспортированном файле неверны (строки, заключенные в кавычки, неправильно обработаны или что-то еще), у вас возникают дополнительные головные боли без причины.