Неверный тип столбца в службе импорта служб SSIS Excel - PullRequest
49 голосов
/ 12 февраля 2009

Я пытаюсь импортировать электронную таблицу в нашу базу данных, используя SSIS. По какой-то причине SSIS хочет верить, что два столбца имеют тип Double, если они содержат символьные данные. Я попытался переназначить столбцы в nvarchar (255), но он по-прежнему не хочет выбирать данные, которые он считает двойными, потому что в нем есть символы. Если я попытаюсь отредактировать пакет служб SSIS и изменить типы столбцов в источнике Excel, он не позволит мне изменить тип столбцов в выводе ошибок и выдаст ошибку, если обычные столбцы вывода и вывода ошибок не матч.

Почему SSIS настаивает на том, чтобы эти столбцы были Double? Как я могу заставить его понять, что это строки? Почему у Microsoft все должно работать не совсем корректно?

РЕДАКТИРОВАТЬ:

Я нашел это:

Я отсортировал свои данные так, чтобы смешанные типы данных были наверху, и угадайте, что: Проблема обратилась . Вместо того, чтобы не импортировать символьные данные, он прекратил импорт чисто числовых данных. Очевидно, кто-то не думает, что 12345 можно представить в виде строки ...

Ответы [ 16 ]

0 голосов
/ 06 декабря 2016

Это сработало для меня. Выберите проблемный столбец в Excel - выделите весь столбец. Измените формат на «Текст». Сохраните файл Excel.

В вашем пакете служб SSIS перейдите на панель «Поток данных» для импорта. Дважды щелкните узел «Источник Excel». Он должен предупредить вас, что типы изменились, и спросить вас, хотите ли вы переназначить их. Нажмите Да. Выполнение должно теперь работать и вводить все значения.

Примечание. Я использую Excel 2013 и Visual Studio 2015, но полагаю, что эти инструкции будут работать и для более ранних версий.

0 голосов
/ 12 июля 2016
  1. Нажмите Файл в меню ленты, а затем нажмите Параметры.
  2. Нажмите кнопку «Дополнительно», а затем в разделе «При вычислении этой книги» установите флажок «Установить точность как отображаемый» и нажмите кнопку «ОК».

  3. Нажмите ОК.

  4. На листе выберите ячейки, которые вы хотите отформатировать.

  5. На вкладке Главная щелкните изображение кнопки запуска диалогового окна рядом с Номер.

  6. В поле Категория щелкните Число.

  7. В поле Десятичные знаки введите количество десятичных знаков, которые Вы хотите отобразить.

0 голосов
/ 16 ноября 2015

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

0 голосов
/ 10 декабря 2014

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

Решение

Чтобы исправить это изменение типа данных Excel, является одним из решений. В Excel Скопируйте данные столбца и вставьте в другой файл. Удалите этот столбец и , вставьте новый столбец как тип данных Text и вставьте скопированные данные в новый столбец.

Теперь в пакете ssis удалите и заново создайте исходный код Excel и в таблице назначения измените столбец тип данных как varchar .

Это будет работать.

0 голосов
/ 03 апреля 2012

У меня была такая же проблема. Проблема находится в задаче Excel Source . Когда вы настраиваете эту задачу в первый раз, она подключится к указанному файлу Excel (через соединение Excel) и решит, какой тип каждого столбца основан на текущей электронной таблице.

Таким образом, если вы настроили задачу Excel Source , просто убедитесь, что столбцы, которые должны быть текстовыми, содержат только текст в столбце. Это означает, что задача Excel Source всегда будет предполагать, что любые последующие электронные таблицы будут иметь одинаковый формат и будут читать 12345 как текст, поскольку столбец был текстом при настройке задачи. 1011 *

Надеюсь, это имеет смысл!

0 голосов
/ 18 февраля 2010

Вариант 1. Используйте Visual Basic для перебора каждого столбца и форматирования каждого столбца как Текст.

Используйте меню «Текст в столбцы», не изменяйте исключение и измените «Общие» на «Текст»

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