Пропуск строк при импорте Excel в SQL с помощью служб SSIS 2008

Мне нужно импортировать листы, которые выглядят следующим образом:

    March Orders   
   ***Empty Row    
    Week Order # Date Cust #
    3.1 271356 3/3/10 010572
    3.1 280353 3/5/10 022114
    3.1 290822 3/5/10 010275
    3.1 291436 3/2/10 010155
    3.1 291627 3/5/10 011840

заголовки столбцов фактически являются строкой 3. Я могу использовать Excel Sourch для их импорта, но я не знаю, как указать, что информация начинается с строки 3.

я погуглил проблему, но ничего не нашел.

4 ответов


посмотреть:

ссылки имеют более подробную информацию, но я включил текст со страниц (на случай, если ссылки будут мертвы)

http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/97144bb2-9bb9-4cb8-b069-45c29690dfeb

Q:

пока мы загружаем текстовый файл в SQL Server через SSIS, у нас есть возможность пропускать любое число ведущих строк от источника и нагрузки данные для SQL server. Есть ли какое-либо положение сделать то же самое для файл Excel.

исходный файл Excel для меня имеет некоторое описание в ведущем 5 строки, Я хочу пропустить его и начать загрузку данных из строки 6. Пожалуйста предоставьте свои мысли по этому поводу.

A:

проще всего было бы дать каждой строке Номер (немного похожий на идентификатор в SQL Server), а затем использовать условное разделение для фильтрации всё где количество

http://social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thread/947fa27e-e31f-4108-a889-18acebce9217

Q:

  1. возможно ли при импорте данных из Excel в таблицу БД пропустить первые 6 строк, например?

  2. также данные Excel, разделенные на разделы с заголовками. Можно ли, например, пропустить каждый 12-й грести?

A:

  1. ДА, ВЫ МОЖЕТЕ. На самом деле, вы можете сделать это очень легко, если вы знаете число столбцов, которые будут импортированы из файла Excel. В ваша задача потока данных, вам нужно будет установить" OpenRowset " пользовательский Свойство соединения Excel (щелкните правой кнопкой мыши соединение Excel > Свойства; в окне Свойства найдите OpenRowset в разделе пользовательские Свойства.) Игнорировать первые 5 строк Sheet1 и импорт столбцов A - M, вы должны ввести следующее значение для OpenRowset: Sheet1$A6:M (обратите внимание, я не указал номер строки для столбца M. вы можете ввести номер строки, если хотите, но в моем случае количество строк может отличаться от одной итерации к другой)

  2. ОПЯТЬ ЖЕ, ДА, ВЫ МОЖЕТЕ. Данные можно импортировать с помощью условного разделения. Вы бы настроили условное разделение, чтобы искать что-то в каждая строка, однозначно идентифицирующая ее как заголовок строка; пропустить строки это соответствует этой "логике заголовка". Другой вариант-импортировать все строки, а затем удалите строки заголовка с помощью сценария SQL в база данных...как курсор, который удаляет каждую 12-ю строку. Или ты мог бы ... добавьте поле идентификатора с семенем / шагом 1/1, а затем удалите все строки с номерами строк, которые делятся идеально на 12. Что-то вроде что...

http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/847c4b9e-b2d7-4cdf-a193-e4ce14986ee2

Q:

У меня есть пакет служб SSIS, который импортирует из файла Excel с данными начало в 7-м ряду.

В отличие от той же операции с csv-файлом ("строки заголовка, чтобы пропустить" в Редактор диспетчера соединений), я не могу найти способ игнорировать первые 6 строк подключения к файлу Excel.

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

A:

вопрос войти, чтобы проголосовать 1 Войти, чтобы проголосовать rbhro, на самом деле были 2 поля в верхних 5 строках, которые имели некоторые данные, которые, я думаю, предотвратили импортер полностью игнорирует эти строки.

в любом случае, я нашел решение моей проблема.

в моем исходном объекте Excel я использовал "команду SQL" в качестве " доступа к данным Режим " (он раскрывается, когда вы дважды щелкните исходный объект Excel). Оттуда я смог построить запрос (кнопка "построить запрос"), который только захватил нужные мне пластинки. Что-то вроде этого: выберите F4, F5, F6 из [электронная таблица$], где (F4 не равно NULL) и (F4 'TheHeaderFieldName')

Примечание: я изначально пробовал ISNUMERIC вместо "не является нулевым", но это почему-то не было поддержано.

в моем конкретном случае меня интересовали только строки, где F4 не был NULL (и, к счастью, F4 не содержал никакого мусора в первых 5 грядки.) Я мог бы пропустить всю строку заголовка (строка 6) со 2-м, где пункт.

Так что очистил мой источник данных отлично. Все, что мне нужно было сделать сейчас. был добавлен объект преобразования данных между источником и назначением (все, что нужно было преобразовать из unicode в электронная таблица), и это сработало.


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

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

Если это не работает, Могу ли я предложить вам открыть файл, удалить первые две строки и сохранить текстовый файл в потоке данных. Затем записать поток данных, который будет обрабатывать текстовый файл. SSIS сделал паршивую работу по поддержке Excel, и все, что вы можете сделать, чтобы получить файл в другом формате, сделает жизнь легче в долгосрочной перспективе.


вы можете просто использовать свойство OpenRowset, которое вы можете найти в свойствах источника Excel. Посмотрите здесь для деталей:

SSIS: чтение и экспорт данных Excel из n-й строки

с уважением.


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

не совсем корректно.

SSIS заставляет вас использовать формат, и довольно часто он не работает правильно с excel

Если вы не можете изменить формат, рассмотрите возможность использования нашего расширенного ETL Процессор.

вы можете пропустить строки или поля, и вы можете проверить данные, как вы хотите.

http://www.dbsoftlab.com/etl-tools/advanced-etl-processor/overview.html

небо это предел