Excel против XML при загрузке данных

Я пытаюсь загрузить файл Excel (2003) на сервер Sql 2005.

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

Теперь у меня есть следующие варианты

Вариант 1: (Предлагается здесь )

Импортировать данные в таблицу со всеми столбцами типа varchar (255). Затем попросите SP проверять тип данных каждого столбца перед тем, как перемещать его в рабочее состояние ... Здесь снова будет ли проблема производительности при использовании IsNumeric, len, IsDate и т. Д.?

Вариант 2: (XML / XSD)

Сгенерируйте XML из файла XL и проверьте его на соответствие предварительно определенному XSD перед импортом XML через .NET или через SSIS. Будет ли этот способ медленным по сравнению с вариантом 1? Смогу ли я проверить длину данных? Смогу ли я точно сообщить, какая строка и столбец вызвали ошибку?

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

Если есть лучший способ справиться с этим ... Пожалуйста, дайте мне знать ...

Спасибо

1
задан Community 23 May 2017 в 12:04
поделиться

2 ответа

Определенно отделите валидацию от импорта. Лично я бы использовал MS Access для валидации, поскольку он более снисходителен к проблемам хранения данных в Excel, чем SQL Server, но вы можете использовать таблицу на SQL Server со всеми полями varchar(255), если хотите.

Импорт тривиален, валидация - это отдельный проект.

Данные могут не пройти проверку множеством способов, и для каждого из них нужен свой собственный код.

1
ответ дан 2 September 2019 в 22:00
поделиться

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

1
ответ дан 2 September 2019 в 22:00
поделиться
Другие вопросы по тегам:

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