Как сохранить Excel/DataTable таблицу в БД (MS SQL Server)?
Есть таблицы DataTable (Excel) с различным количеством столбцов, строк, а также любыми вариантами типов столбцов.
Как оптимально сохранять таблицу в базу данных (MS SQL Server) ?
чтобы сохранить:
- названия столбцов и их типы
- все строки, ячейки этих таблиц, данные в общем.
Четкого формата таблиц нет. Всегда это набор столбцов от 1 до N. С данными от 1 до M строк.
Создавать таблицу в БД с 100 allownull столбцами вида (col1, col2, .... col100) и заполнять ее начальные стоблцы ,а другие пропускать если таблица меньше - не хочется. Как-то не красиво.
Сохранять каждую ячейку по отдельности - это не оптимально, это занимает огромное количество времени чтобы сохранить и считать.
Вот думаю преобразовать таблицу к простому CSV формату и сохранять как текст, потом его обратно превращать в DataTable.
> Четкого формата таблиц нет.
Значит реляционная модель как таковая вам не подходит. Тут есть два варианта:
1) Entity-Attribute-Value (возможно это вы и имели в виду под "Сохранять каждую ячейку по отдельности", ну тогда решать вам. Работать будет разумеется медленнее, чем нормальная таблица, но у вас же нет схемы, ничего не поделаешь)
2) JSON/XML. Тут уж либо поля типа XML, либо привет документно-ориентированная СУБД.
Второй вариант годится, если выборки внутри таблицы не нужны или нужны редко (раз уж вы заговорили про CSV). Если нужны часто - то тогда EAV самое оно.
Может разные таблицы (с разной структурой) хранить/импортировать в разные таблицы => MyCoolTable001, MyCoolTable002 ...
А в крайнем случае еще создать метатаблицу в которой хранить что MyCoolTable001 был импортирован из D:\Важные данные\111.xlsx в 2015-05-06 04:34:57.