Работа с изменяющейся табличной структурой Excel для импорта в таблицу базы данных

Я ищу стратегию для решения следующей Excel для db-issue (SQL Server 2012):

Вводом будут файлы Excel одного и того же объекта, но настройка столбцов в этих файлах Excel может меняться из месяца в месяц, что означает, что столбцы будут удалены или добавлены внутри этих файлов Excel, что не является «самым большим» сценарием для поддержки db .

Обратите внимание, что при изменении файла Excel имя файла / ID также изменяется.

Итак, чтобы сохранить эти файлы (через SSIS ) в одной таблице db, я бы установил « общую » структуру, используя имена столбцов COL1-COLN. Затем я добавляю поле версии в каждый файл Excel, чтобы создать некоторую таблицу сопоставления, в которой я определяю имена соответствующих столбцов в зависимости от версии. В основном новый месяц создаст новый номер версии. Затем это поможет мне создать представление для извлечения всех версий с соответствующими именами столбцов.

В первой версии у меня около 120 столбцов.

У меня также есть «crosstable -scenario», потому что некоторые столбцы содержат значения года. Например, предположим, что входной файл содержит Savings 2009, Savings 2010, Savings 2011. Если в версии 2 добавлен столбец «Экономия 2012», мне нужно будет создать еще один столбец в таблице db, если «Savings 2009» не будет удален, и я добавил значения для 2010 в столбец «2009».

Вы видите, что это беспорядок!

С этой структурой мне всегда придется менять рабочий процесс импорта и корректировать сопоставление имен, но я не могу придумать лучшего способа решения этой проблемы.

Нужно ли разделять столбцы на разные таблицы?

Я надеюсь, что моя проблема натолкнулась на то, что вы можете направить меня к чистому «беззаботному» решению 🙂

Как вы могли догадаться, я не очень сильно влияю на входные файлы, с которыми мне нужно иметь дело.

Спасибо.

Я сталкиваюсь с этой проблемой много. Часто бизнес-пользователи часто предпочитают работать с файлами Excel. И эта информация необходима в базах данных. Следующее – моя стратегия.

Во-первых, у меня есть хранимая процедура, которая читает таблицу Excel. Эта хранимая процедура считывает заголовки из одной строки и данные, начиная с другой строки. Он присваивает заголовкам имена столбцов и форматы в качестве типа базы данных для столбца.

Во-вторых, я сохраняю предыдущую версию таблицы. Если столбец исчез или изменился, я генерирую электронное письмо для уведомления о проблеме. Обычно новая версия является правильной версией, и я просто принимаю ее как правильную таблицу. Это обеспечивает цикл обратной связи.

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

  • Как разбить файл Excel на два столбца?
  • TSQL - циклический столбец для запроса другой таблицы
  • Добавление alt + enter (excel linefeed) в tsql-коде
  • Нечетность функции AVG SQL Server
  • Loop для вставки нескольких значений в SQL Server
  • Таблица сводной таблицы Excel 2010 из MS Query Calculation and Grouping Issue
  • Агрегированный подзапрос внутри другого агрегированного запроса
  • Установите значение таблицы по умолчанию на левую панель с нулями
  • Среднее значение SQL для строк и столбца одновременно - среднее значение матрицы
  • Экспорт данных в Excel из SQL Server с использованием проблемы с OPENROWSET
  • Вставить разрыв строки в SQL-запрос, встроенный в соединение рабочей книги Excel
  • Давайте будем гением компьютера.