SSIS делает 2 вещи в отношении обработки плоских файлов, которые особенно расстраивают, и кажется, что вокруг них должен быть способ, но я не могу понять это. Если вы определяете плоский файл с 10 столбцами, вкладка, ограниченная CRLF в качестве маркера конца строки, будет отлично работать для файлов, где в каждой строке всего ровно 10 столбцов. Эти 2 болезненные сценарии таковы:Плоские файлы SSIS с переменными номерами столбцов
Если кто-то поставляет файл с 11-го столбца в любом месте, было бы неплохо, если бы SSIS просто игнорировали его, так как вы не определили его. Он должен просто прочитать 10 столбцов, которые вы определили, а затем пропустить до конца маркера строки, но вместо этого он объединяет любые дополнительные данные с данными в 10-м столбце и вставляет все это в 10-й столбец. На самом деле бесполезно. Я понимаю, что это происходит, потому что разделитель для 10-го столбца не является вкладкой, как все остальные, но CRLF, поэтому он просто захватывает все до CRLF, заменяя лишние вкладки ничем, поскольку это так. На мой взгляд, это не умно.
Если кто-то поставляет файл только с 9 колоннами, что-то еще хуже. Он временно игнорирует CRLF, который он неожиданно обнаружил, и проложил все отсутствующие столбцы с столбцами с начала следующей строки! Не умен - это преуменьшение здесь. Кто бы хотел, чтобы это произошло? Остальная часть файла - это мусор в этот момент.
Это не кажется неразумным иметь вариации в ширине файла по какой-либо причине (конечно только вариация в конце строки reaonably может быть обработана (х или меньшим количеством дополнительных столбцов), но это выглядит, как это
До сих пор наше единственное решение - загрузить строку как один гигантский столбец (столбец0), а затем использовать задачу сценария для динамического разделения, используя, однако, множество разделителей Это работает хорошо, за исключением того, что ограничивает ширину строки до 4000 символов (максимальная ширина одного столбца Юникода) .Если вам нужно импортировать более широкую строку (скажем, с несколькими столбцами шириной 4000 для импорта текста), вам необходимо определить несколько столбцы как abo ve, но вы застряли с требованием строгого количества столбцов в строке.
Есть ли какой-либо путь вокруг этих ограничений?