Я пытаюсь загрузить Excel (2003) файл в сервере Sql 2005Excel Vs XML на Выгрузка данных
В настоящее время мы используем SSIS для загрузки файла во временную таблицу (с определенной схеме), а затем перемещение данных в их предполагаемое местоположение с помощью хранимой процедуры. Это дает много ошибок из-за несоответствия типа данных, а иногда нулевые значения загружаются в таблицу, даже если файл excel содержит значения.
Теперь у меня есть следующие варианты
Вариант 1: (Предложил here)
Импорт данных в таблицу со всех столбцов типа VARCHAR (255). Затем попросите SP проверить тип данных для каждого столбца, прежде чем переместить его на живое ... Здесь снова будет проблема с производительностью использовать IsNumeric, len, IsDate и т. Д.?
Вариант 2: (XML/XSD)
Генерация XML из файла XL и проверить его на предопределенный XSD, прежде чем импортировать XML-файл через .NET или с помощью SSIS. Будет ли этот путь медленным по сравнению с вариантом 1? Смогу ли я также проверить длину данных? Смогу ли я сообщить, какие строки и столбцы вызвали ошибку?
По вашему мнению, что хорошо по производительности и другим аспектам ... В частности, когда есть ошибка, я должен быть в состоянии сообщить пользователю, в какой строке и столбце возникла ошибка.
Если есть лучший способ справиться с этим ... Пожалуйста, дайте мне знать ...
Благодаря
сторона примечание: IsNumeric * редко * правильный ответ на любой вопрос - если этот вопрос не "это значение, конвертируемое в * любой * числовой тип - мне все равно, что?". Итак, если для вас приемлемы такие значения, как 1d50 и 3.5, используйте его. –
Спасибо за примечание ... Так что я должен использовать, если мне нужно проверить int, Decimal, smallint и т. Д. –
Для int, например, надеюсь, вы работаете в более ограниченном домене, чем «all int значения". Предположим, вы хотите до 6 цифр, положительное число. Проверьте это с помощью выражения LIKE, например. Col LIKE '[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]'. IsNumeric * будет * полезен, если вы также можете передать ему тип данных, который вы ищете, но, увы, это не так. –