Ошибка при анализе CSV-файла

Обновлено: 30.06.2024

Выглядит знакомо? Вы, вероятно, сталкивались с этими сообщениями об ошибках импорта, если вам когда-либо приходилось импортировать CSV-файл. Несмотря на достижения почти во всех аспектах технологии, передача файла CSV из одной системы в другую по-прежнему остается основным камнем преткновения. А поскольку клиенты не могут использовать ваше приложение, не имея возможности заполнить свои данные, проблема с импортом CSV часто возникает в самый неподходящий момент — во время процесса адаптации клиента.

Вы можете подумать, что решили проблему, создав инструкции для клиентов о том, как правильно форматировать CSV для импорта, или предоставив готовый шаблон CSV, чтобы они могли манипулировать своими данными в соответствии с вашими потребностями импорта. Но на самом деле вы ничего не "решили". Вы только что переложили бремя исправления ошибки импорта CSV на своего клиента — как раз в тот момент, когда вы пытаетесь произвести на них впечатление своим технологическим опытом.

Первый шаг к правильному устранению ошибки импорта CSV – четкое ее понимание.

Вот основные проблемы с импортом CSV, которые могут вызвать серьезные проблемы при импорте ваших файлов.

<р>1. Размер файла

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

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

Ошибка сопоставления также может возникнуть, если ожидаемые столбцы расположены в неправильном порядке или обязательные поля — столбцы — отсутствуют.

<р>3. Перевод (данные):

Ошибка перевода данных может возникнуть, если кодировка неверна или непредвиденна. Другой причиной может быть наличие нестандартных символов, которые нельзя использовать. Например, может потребоваться сохранить файл в кодировке UTF-8, чтобы этот файл правильно работал на платформе компании. Попытка импортировать данные с другими закодированными файлами просто не сработает. Посмотрите этот пример использования Inkit, чтобы увидеть именно этот пример.

Улучшить процесс загрузки данных

Легко импортировать данные о клиентах

Проблемы со значениями данных могут быть серьезной причиной ошибок импорта CSV. К ним относятся непредвиденная длина данных — слишком длинная или слишком короткая. Это также может означать недопустимые символы, такие как текст в столбце, состоящем только из чисел, или числа в логическом значении (логическое значение — это тип данных с двумя возможными значениями: true или false.)

Связанные поля с конфликтующими данными, например записи с несколькими типами уникальных идентификаторов, когда разрешен только один, вызовут ошибки. Например, названия городов или штатов отличаются от их фактических почтовых индексов или даже связанных полей, в которых нет обязательных данных.

<р>5. Отсутствуют данные

Отсутствие данных — одна из самых распространенных ошибок при импорте CSV. Примеры включают неполные данные, которые может исправить пользователь, такие как счета, в которых указан месяц и день, но нет информации о годе. Другие неполные данные могут быть обработаны пользователем с помощью системы, в которой он работает. Отсутствующие данные города/штата с присутствующими почтовыми индексами и существующей информацией о роли контакта обычно могут быть добавлены автоматически. Информация о новой роли контакта, включая предложения от систем, основанные на сопоставлении связанных контактов или данных, должна быть исправлена ​​в системе вручную.

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

<р>6. Неперевариваемые форматы:

К неперевариваемым форматам относятся простые несоответствия форматов, требующие нормализации формата, такие как номера телефонов или номера социального страхования, которые представляют собой числа без символов. Сложные несоответствия форматов потребуют нормализации формата И нормализации данных, например, когда формат даты отличается от ожидаемого, несовместим или включает текст, а не нормализован, например, "31 июля 2020 года" или "20 июня 19".

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

Платформа загрузки данных Flatfile предназначена для того, чтобы помочь вашей команде беспрепятственно импортировать данные о клиентах. Всего за несколько кликов данные сопоставляются, проверяются и успешно импортируются. Теперь данные клиентов чисты и готовы к использованию.Интеграция Flatfile в ваш продукт означает, что ваша команда может сосредоточиться на более значимой работе, например на создании уникальных функций. Flatfile обеспечивает более быстрый и удобный импорт данных для ваших клиентов, партнеров и поставщиков.

Важно: поддержка ошибок появилась недавно в версии 4.5. Охват еще не является исчерпывающим. Код, сообщение и свойства, задокументированные ниже, могут измениться в ближайшем будущем.

  • код
    Определите тип ошибки, уникальный для каждой ошибки, выдаваемой синтаксическим анализатором, см. ниже список кодов ошибок.
  • сообщение
    Описательное и иногда подробное сообщение об ошибке, представленное удобочитаемой версией кода.

Ошибка также дополнена несколькими контекстными свойствами:

  • столбец (число|строка)
    Имя столбца, если определены параметры столбцов, или позиция поля.
  • empty_lines (число)
    Внутренний счетчик пустых строк до этого поля.
  • header (boolean)
    Логическое значение, указывающее, является ли предоставленное значение частью заголовка.
  • индекс (число)
    Позиция поля, начинающаяся с 0.
  • invalid_field_length (число)
    Количество записей с неравномерной длиной, если для параметра relax_column_count установлено значение true. До версии 3 он назывался skipped_lines.
  • lines (number)
    Количество обработанных строк, включая текущую строку.
  • цитирование (логическое значение)
    логическое значение, указывающее, заключено ли поле в кавычки.
  • записей (количество)
    Количество записей, которые были полностью проанализированы. Он назывался count until version 3.

Наконец, каждый тип ошибки, определяемый свойством кода, может включать дополнительные свойства.

  • code: CSV_INVALID_CLOSING_QUOTE
    Вызывается, когда цитата находится в неожиданном месте. Синтаксический анализатор можно сделать устойчивым к этой ошибке, активировав параметр Relax_quotes.
  • код: CSV_RECORD_INCONSISTENT_FIELDS_LENGTH
    Вызывается, когда запись не соответствует тому же количеству полей, что и предыдущие записи. Парсер можно сделать терпимым к количеству полей с помощью опции relax_column_count. Дополнительные свойства включают:
    • record
      Недопустимая обнаруженная запись.
    • record
      Недопустимая обнаруженная запись.
    • headers
      Недопустимое значение заголовков, возвращаемое функцией.
    • код: CSV_INVALID_ARGUMENT
      сообщение: недопустимый аргумент: получен в индексе
      Выдается при вызове экспортируемой функции синтаксического анализа с неверными аргументами.
    • код: CSV_INVALID_OPTION_BOM
      сообщение: Неверный параметр bom: bom должен быть истинным,
      вызван, когда параметр приведения неверен.
    • код: CSV_INVALID_OPTION_CAST
      сообщение: Неверное приведение параметра: приведение должно быть истинным, иначе функция
      вызвана, когда параметр приведения неверен.
    • код: CSV_INVALID_OPTION_CAST_DATE
      сообщение: Неверный параметр cast_date: cast_date должен быть истинным или функция,
      вызвана, когда определение столбца не содержит свойства имени.
    • код: CSV_INVALID_COLUMN_DEFINITION
      сообщение: Недопустимое определение столбца: ожидается строка или литеральный объект, полученный в позиции true
      Вызывается при неверном определении столбца.
    • код: CSV_OPTION_COLUMNS_MISSING_NAME
      сообщение: в столбцах параметров отсутствует имя: свойство «имя» требуется в позиции, когда столбец является литералом объекта
      Вызывается, когда определение столбца является объектом без свойства имени.
    • код: CSV_INVALID_OPTION_COLUMNS
      сообщение: Недопустимые столбцы параметров: ожидается объект, функция или истина,
      Выброшено, когда параметр столбца неверен.
    • код: CSV_INVALID_OPTION_COMMENT
      сообщение: Недопустимый комментарий к опции: комментарий должен быть буфером или строкой, выброшенной, когда опция комментария неверна.
    • код: CSV_INVALID_OPTION_DELIMITER
      сообщение: Недопустимый разделитель параметров: разделитель должен быть непустой строкой или буфером, который
      вызывается, когда параметр разделителя неверен.
    • код: CSV_INVALID_OPTION_RECORD_DELIMITER
      сообщение: Недопустимая опция `record_delimiter`: значение должно быть непустой строкой или буфером или массивом строк|буфера, полученного
      начиная с: 5.0.0
      Выброшено, когда параметр record_delimiter неверен.

    Вы используете событие "финиш" и у вас нет всех записей. Событие "readable" все еще вызывается с несколькими оставшимися записями.

    Здравствуйте,
    я делаю прямую копию csv с сайта sftp в контейнер больших двоичных объектов, но продолжаю получать следующую ошибку.

    Ниже приведены настройки набора данных как для источника, так и для приемника. Точно так же.

    85951-image.jpg

    Строка с ошибкой выглядит следующим образом: одинарная и двойная кавычки в одном и том же столбце. Посоветуйте, как решить эту проблему?

    ![85897-image.jpg

    ][2]

    2 ответа

    Пожалуйста, измените символ Escape на " вместо "\". Вот похожая тема о проблеме с двойными кавычками в файле CSV. Надеюсь, это поможет! Спасибо! :)

    @nasreen-akter - предоставленная ссылка не работает :(

    @samnick-7321, пожалуйста, проверьте ссылку сейчас. Спасибо!

    Спасибо, что обратились к нам и поделились исходными данными, которые помогли лучше понять проблему. Похоже, проблема связана с исходными данными -> значения имени столбца.

    Глядя на конфигурацию исходного набора данных, ваш columnDelimiter является запятой, а глядя на ваши исходные данные, в вашем первом столбце Name есть имя и фамилия, разделенные запятой. Это означает, что исходный набор данных будет обрабатывать эти значения как два разных значения столбца, поэтому вы получаете сообщение об ошибке DelimitedTextMoreColumnsThanDefined, которое является допустимым сообщением об ошибке.

    После изменения исходных данных это должно выглядеть так:

    85982-image.jpg

    Чтобы решить эту проблему, исходные данные должны быть исправлены для столбца Name . Значение имени и фамилии должно быть заключено в двойные кавычки, как показано на изображении выше, а исходный набор данных должен быть настроен, как показано ниже:

    85899-image.jpg

    И ваш набор данных приемника должен быть настроен, как показано ниже, чтобы избежать ошибки.

    85900-image.jpg

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

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

    Важно: поддержка ошибок появилась недавно в версии 4.5. Охват еще не является исчерпывающим. Код, сообщение и свойства, задокументированные ниже, могут измениться в ближайшем будущем.

    • код
      Определите тип ошибки, уникальный для каждой ошибки, выдаваемой синтаксическим анализатором, см. ниже список кодов ошибок.
    • сообщение
      Описательное и иногда подробное сообщение об ошибке, представленное удобочитаемой версией кода.

    Ошибка также дополнена несколькими контекстными свойствами:

    • столбец (число|строка)
      Имя столбца, если определены параметры столбцов, или позиция поля.
    • empty_lines (число)
      Внутренний счетчик пустых строк до этого поля.
    • header (boolean)
      Логическое значение, указывающее, является ли предоставленное значение частью заголовка.
    • индекс (число)
      Позиция поля, начинающаяся с 0.
    • invalid_field_length (число)
      Количество записей с неравномерной длиной, если для параметра relax_column_count установлено значение true. До версии 3 он назывался skipped_lines.
    • lines (number)
      Количество обработанных строк, включая текущую строку.
    • цитирование (логическое значение)
      логическое значение, указывающее, заключено ли поле в кавычки.
    • записей (количество)
      Количество записей, которые были полностью проанализированы. Он назывался count until version 3.

    Наконец, каждый тип ошибки, определяемый свойством кода, может включать дополнительные свойства.

    • code: CSV_INVALID_CLOSING_QUOTE
      Вызывается, когда цитата находится в неожиданном месте. Синтаксический анализатор можно сделать устойчивым к этой ошибке, активировав параметр Relax_quotes.
    • код: CSV_RECORD_INCONSISTENT_FIELDS_LENGTH
      Вызывается, когда запись не соответствует тому же количеству полей, что и предыдущие записи. Парсер можно сделать терпимым к количеству полей с помощью опции relax_column_count. Дополнительные свойства включают:
      • record
        Недопустимая обнаруженная запись.
      • record
        Недопустимая обнаруженная запись.
      • headers
        Недопустимое значение заголовков, возвращаемое функцией.
      • код: CSV_INVALID_ARGUMENT
        сообщение: недопустимый аргумент: получен в индексе
        Выдается при вызове экспортируемой функции синтаксического анализа с неверными аргументами.
      • код: CSV_INVALID_OPTION_BOM
        сообщение: Неверный параметр bom: bom должен быть истинным,
        вызван, когда параметр приведения неверен.
      • код: CSV_INVALID_OPTION_CAST
        сообщение: Неверное приведение параметра: приведение должно быть истинным, иначе функция
        вызвана, когда параметр приведения неверен.
      • код: CSV_INVALID_OPTION_CAST_DATE
        сообщение: Неверный параметр cast_date: cast_date должен быть истинным или функция,
        вызвана, когда определение столбца не содержит свойства имени.
      • код: CSV_INVALID_COLUMN_DEFINITION
        сообщение: Недопустимое определение столбца: ожидается строка или литеральный объект, полученный в позиции true
        Вызывается при неверном определении столбца.
      • код: CSV_OPTION_COLUMNS_MISSING_NAME
        сообщение: в столбцах параметров отсутствует имя: свойство «имя» требуется в позиции, когда столбец является литералом объекта
        Вызывается, когда определение столбца является объектом без свойства имени.
      • код: CSV_INVALID_OPTION_COLUMNS
        сообщение: Недопустимые столбцы параметров: ожидается объект, функция или истина,
        Выброшено, когда параметр столбца неверен.
      • код: CSV_INVALID_OPTION_COMMENT
        сообщение: Недопустимый комментарий к опции: комментарий должен быть буфером или строкой, выброшенной, когда опция комментария неверна.
      • код: CSV_INVALID_OPTION_DELIMITER
        сообщение: Недопустимый разделитель параметров: разделитель должен быть непустой строкой или буфером, который
        вызывается, когда параметр разделителя неверен.
      • код: CSV_INVALID_OPTION_RECORD_DELIMITER
        сообщение: Недопустимая опция `record_delimiter`: значение должно быть непустой строкой или буфером или массивом строк|буфера, полученного
        начиная с: 5.0.0
        Выброшено, когда параметр record_delimiter неверен.

      Вы используете событие "финиш" и у вас нет всех записей. Событие "readable" все еще вызывается с несколькими оставшимися записями.

      Читайте также: