Проблемы при загрузке плоского файла, разделенного ||, в базу данных SQL Server через SSIS

#sql-server #database #exception #ssis

#sql-server #База данных #исключение #ssis

Вопрос:

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

Код ошибки — 1071607675 — Недопустимый символ в плоском файле или проблема с усечением

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

Я не могу понять, в чем именно проблема с этими записями. Поскольку набор данных огромен, я не могу поделиться здесь.

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

Комментарии:

1. Можете ли вы поделиться с нами несколькими записями (несколько вставленных с первой попытки и несколько не вставленных …)? Можете ли вы также поделиться с нами инструкцией create table.

2. Я предполагаю, что где-то ранее в файле разделители были «выключены», и когда он, наконец, стал достаточно плохим, чтобы выдать ошибку, строка, о которой сообщается, значительно превышает исходную неверную строку. Часто ваша промежуточная таблица будет выглядеть как парикмахерский столб (при условии, что это всего лишь n / varchar полей), если вы упорядочиваете по времени вставки. Вы можете уменьшить максимальный размер буфера строк до 1 и установить для команды ole db размер фиксации, равный 1. Неэффективно, насколько это возможно, но поскольку в буфере разрешена только 1 строка, становится очевидным, какая строка является «плохой»

3. Одна из возможностей заключается в том, что исходный исходный файл содержал смешанные последовательности EOL (конец строки), например: SSIS был настроен для и ожидал, что каждая строка будет заканчиваться возвратом каретки, переводом строки (0x0d 0x0a), но некоторые строки заканчивались либо возвратом каретки (0x0d), либо переводом строки (0x0a). В зависимости от текстового редактора, который вы использовали для извлечения сбойных записей и вставки их в новый файл, эти окончания строк могли быть исправлены (0x0d 0x0a) и, таким образом, успешно прочитаны.

4. @billinkc Я попытался в соответствии с вашим предложением, но получил тот же файл с ошибкой, что и раньше, с теми же записями.

5. @AlwaysLearning есть ли какой-либо способ исправить это. Я попытался изменить EOL, но получаю тот же результат.