Ошибки SSIS для простого потока данных CSV

Извините, что омрачил ваш день моими неприятностями, но SSIS сломал меня! Я новичок в SSIS, и мне кажется, что я неправильно понимаю это.

Для справки: у меня есть несколько версий базового пакета, который включает контейнер цикла по каждому элементу и поток данных с несколькими производными столбцами, который импортирует файлы CSV в промежуточную таблицу SQL Server. Это очень просто и включает в себя задачу "Выполнение SQL" и "Перемещение файла", но они отлично работают. Проблемы связаны с циклом Foreach и потоком данных.

У меня есть одна версия этого пакета (назовем его "А"), которая, кажется, работает нормально. Он будет обрабатывать несколько файлов в папке, вставлять записи в промежуточную таблицу, правильно выполнять операторы SQL и перемещать файлы в архив. Все казалось хорошо, пока я тщательно не проверил процесс. Оказывается, он дублировал данные из одного файла и никогда не импортировал данные из второго исходного файла! Тем не менее, второй / двойной цикл данных включал в себя имя исходного файла (через производный столбец) второго файла (но данные из первого). Похоже, я успешно обработал ОБА файлы, пока не посмотрел на фактические данные и не увидел, что ни одно из значений из второго исходного файла никогда не было записано в промежуточную таблицу.

Когда я обнаружил это, я понял, что проблема заключалась в цикле Foreach и в том, как я настраивал различные переменные пути и имени файла. Итак, я решил попробовать сделать новую версию пакета. Я начал с копирования пакета A и создал пакет B. В B я удалил Диспетчер исходных соединений и создал новый Диспетчер соединений вместе со всеми новыми переменными file & path. Затем я попытался очистить / исправить / заменить различные элементы в моем потоке данных и цикле Foreach. В процессе, я обнаружил, что расширенные сопоставления из A - которые DID работают - были практически все настроены как String (даже столбцы Currency и Date). Это не выглядело правильно, поэтому я изменил каждый исходный столбец денег, изменив тип данных Валюта, и изменил каждый связанный с датой столбец на тип данных Дата.

За этим последовали десятки и десятки ошибок, и я не могу запустить пакет B. Я даже изменил все типы данных B обратно на String (зеркально отображая настройки в пакете A, которые работают DID). Но все равно нет радости.

Это заставляет меня задать несколько вопросов тем из вас, кто умнее меня:

1) Почему службы SSIS не могут интерпретировать данные Source CSV, используя правильный тип данных? Т.е. зачем мне устанавливать каждый столбец Input как STRING, если некоторые столбцы имеют четкие и полностью числовые значения, валюты или даты? (Да, исходные CSV-файлы ОЧЕНЬ чисты - у большинства даже нет NULL)

а. Когда я изменяю Расширенное сопоставление для столбца Источник, связанный с датой, на Дата, я получаю постоянное сообщение об ошибке: [Источник плоского файла [30]] Ошибка: преобразование данных не выполнено. Преобразование данных для столбца "Дата расчета" вернуло значение состояния 2 и текст состояния "Значение не удалось преобразовать из-за потенциальной потери данных".

2) Когда я сбрасываю типы данных обратно в строку в пакете B, я все равно получаю ошибки - обычно ошибки усечения (и да - я установил длину до 250 в одном из этих столбцов). а. Сообщение об ошибке: "Значение не может быть преобразовано из-за потенциальной потери данных". б. Когда я сбрасываю сопоставления, чтобы игнорировать столбец (как тест), он выдает похожую ошибку в следующем столбце.

3) Есть идеи, почему пакет А будет дублировать данные файла, а не обрабатывать второй файл, но при этом не выдавать ошибок и перемещать их в архив?

4) Почему в средстве просмотра данных появляются ошибки синтаксического анализа (данные отображаются в неправильных столбцах), но когда вы используете функцию копирования данных в средстве просмотра данных и вставляете ее в Excel, все строки данных выстраиваются идеально?

5) Существуют ли какие-либо советы и хитрости, которые должен понять пользователь SSIS-новичка, и которые могут быть не очевидны из документации и поиска в веб-статьях, а также на этом сайте?

Я могу предоставить дополнительную информацию, если они помогут, но эти пакеты действительно очень просты и не должны вызывать у меня много разочарований.

СПАСИБО за любые идеи.

ДГП

2 ответа

Спасибо Tab & Shaheen,

Всем новичкам в SSIS - учитесь на моих ошибках!

Похоже, что моя проблема была в том, как я определил КВАЛИФЕР ТЕКСТА в диспетчере соединений. Я вошел "", и это вызывало проблемы с тем, как мои колонки анализировались. Проблемы синтаксического анализа привели к появлению неожиданных значений в некоторых столбцах, что привело к ошибкам в пакете.

Когда я попытался изменить Text Qualifier только на ОДНУ двойную кавычку - " - все сработало!

Как я уже упоминал - и, как подозревал Шахин, - мои первые проблемы с обработкой дубликатов, вероятно, были связаны с тем, как я настроил цикл foreach. Я уже исправил это, бит все еще получал ошибки, пока я не исправил Text Qualifier.

Я проверял это только несколько раз, но похоже, что это была проблема.

Спасибо за вклад.

ДГП

Ух ты, похоже, у тебя много проблем с ssis... Я думаю, что причина извлечения того же файла кроется в том, как определяются твои "переменные отображения".

Вы смотрели и следовали этому руководству:

https://www.simple-talk.com/sql/ssis/ssis-basics-introducing-the-foreach-loop-container/

Надеюсь это поможет.

Шахин

Другие вопросы по тегам