Как импортировать CSV-файл переменной длины записи с помощью SSIS?

StackOverflow https://stackoverflow.com/questions/89372

Вопрос

Кто-нибудь смог получить текстовый файл переменной длины записи (CSV) в SQL Server через SSIS?

Я снова и снова пытался поместить файл CSV в таблицу SQL Server, используя SSIS, где входной файл имеет различную длину записей.Для этого вопроса две разные длины записи составляют 63 и 326 байт.Все длины записей будут импортированы в одну и ту же таблицу шириной 326 байт.

Импортируется более 1 миллиона записей.
Я не могу контролировать создание файла импорта.
Я должен использовать SSIS.
Я подтвердил в MS, что об этом сообщается как об ошибке.Я попробовал несколько обходных путей.В большинстве случаев я пытался написать собственный код для перехвата записи, но, похоже, не могу заставить его работать так, как хочу.

Это было полезно?

Решение

У меня была аналогичная проблема, и я использовал собственный код (задача сценария) и компонент сценария на вкладке «Поток данных».

У меня есть источник плоского файла, передаваемый в компонент сценария.Внутри я использую код для управления входящими данными и их исправления для пункта назначения.

Моя проблема заключалась в том, что поставщик использовал «000000», поскольку дата недоступна, а в другом столбце возникла проблема с заполнением/обрезкой.

Другие советы

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

Похоже, вы используете формат фиксированной ширины, который не подходит для файлов CSV (поскольку у вас столбец переменной длины), или, возможно, вы неправильно установили разделитель столбцов.

Та же проблема.В моем случае целевой файл CSV имеет записи верхнего и нижнего колонтитула с форматами, совершенно отличными от тела файла;верхний/нижний колонтитул используются для проверки полноты обработки файла (дата/время, количество записей, итоговые суммы - «контрольная сумма» под любым другим именем...).Это общий формат для файлов из сред «мэйнфреймов», и, хотя я еще не начал с ним работать, я ожидаю, что мне придется использовать сценарии, чтобы удалить верхний и нижний колонтитулы, сохранить остальное как новый файл, обработать новый файл, а затем выполните проверку.Не могу точно ожидать, что MS будет иметь это из коробки (но это было бы здорово, не так ли?).

Вы можете написать задачу-скрипт, используя C#, чтобы перебирать каждую строку и дополнять ее необходимым количеством запятых для заполнения данных.Это предполагает, конечно, что все данные совпадают с соответствующими столбцами.

Т.е.читая каждую запись, вы можете «подсчитать» количество запятых.Затем просто добавляйте X запятых в конец записи, пока не будет нужное количество запятых.

В Excel есть проблема, из-за которой при преобразовании в CSV создается файл такого типа.

Если вы можете сделать это «вручную», лучший способ решить эту проблему — открыть файл в Excel, создать столбец в «конце» записи и заполнить его до конца 1s или какой-либо другой персонаж.

Неприятно, но может быть быстрым решением.

Если у вас нет возможности сделать это, вы можете сделать то же самое программно, как описано выше.

Почему вы не можете просто импортировать его как тестовый файл и установить для разделителя столбцов значение «», а для разделителя строк — CRLF?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top