NYMEZIDE
@NYMEZIDE
резюме - ivanfilatov.ru

Как сохранить Excel/DataTable таблицу в БД (MS SQL Server)?

Есть таблицы DataTable (Excel) с различным количеством столбцов, строк, а также любыми вариантами типов столбцов.

Как оптимально сохранять таблицу в базу данных (MS SQL Server) ?
чтобы сохранить:
- названия столбцов и их типы
- все строки, ячейки этих таблиц, данные в общем.

Четкого формата таблиц нет. Всегда это набор столбцов от 1 до N. С данными от 1 до M строк.

Создавать таблицу в БД с 100 allownull столбцами вида (col1, col2, .... col100) и заполнять ее начальные стоблцы ,а другие пропускать если таблица меньше - не хочется. Как-то не красиво.

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

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

Может какие еще варианты есть?
  • Вопрос задан
  • 1890 просмотров
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
> Четкого формата таблиц нет.
Значит реляционная модель как таковая вам не подходит. Тут есть два варианта:
1) Entity-Attribute-Value (возможно это вы и имели в виду под "Сохранять каждую ячейку по отдельности", ну тогда решать вам. Работать будет разумеется медленнее, чем нормальная таблица, но у вас же нет схемы, ничего не поделаешь)
2) JSON/XML. Тут уж либо поля типа XML, либо привет документно-ориентированная СУБД.

Второй вариант годится, если выборки внутри таблицы не нужны или нужны редко (раз уж вы заговорили про CSV). Если нужны часто - то тогда EAV самое оно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
toxicdream
@toxicdream
Дружелюбный и доверчивый социопат
Может разные таблицы (с разной структурой) хранить/импортировать в разные таблицы => MyCoolTable001, MyCoolTable002 ...
А в крайнем случае еще создать метатаблицу в которой хранить что MyCoolTable001 был импортирован из D:\Важные данные\111.xlsx в 2015-05-06 04:34:57.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы