Ошибки данных при импорте CSV: почему возникают и как исправить

Цены удвоились. «café» превратилось в «café». Три копии каждого товара. Когда импорт идёт не так, первый инстинкт — обвинить файл, но «плохой файл» почти никогда не причина: две системы молча разошлись во мнениях о том, что означает запятая, кавычка или число, и ничто не сигнализировало о расхождении, пока неверные данные уже не оказались перед вами.

Семь способов, которыми аккуратный на вид файл врёт

Каждая из этих проблем приходит с правильным числом строк и без единого сообщения об ошибке.

Несовпадение кодировок — файл, записанный в Windows-1252 и прочитанный как UTF-8 (или наоборот), превращает «café» в «café», а тире — в три нечитаемых символа. Ничего не падает; значения просто становятся неверными — в тех столбцах, которые вы случайно не пролистали.

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

«Помощь» электронной таблицы перед экспортом — Excel хранит почтовый индекс, введённый как 01234, в виде числа 1234, а 16-значный штрихкод отображает в экспоненциальной записи, округлённой после 15 знаков. К моменту записи CSV исходное значение уже нигде не сохранилось.

Числа, которые значат два разных значения1.234,56 и 1,234.56 — это одна и та же сумма по двум региональным соглашениям. Прочитайте одно по правилам другого — и оно спокойно распарсится, но как 1.23 или как 1234560.

Заголовки, которые сдвигаются — экспорт добавляет или переставляет столбец, «postcode» становится «postal_code», а импортёр, сопоставляющий по позиции, тихо записывает описания в поля цены. Ничто в CSV не гарантирует, что столбец 4 дважды означает одно и то же.

Повторный импорт без устойчивого ключа — исправьте три строки, загрузите заново 2000, и импортёр без устойчивой идентичности для каждой записи создаст 2000 дублей вместо обновления трёх. Имена меняются; внешний идентификатор, артикул или номер заказа — нет.

Невидимые символы — неразрывный пробел, вставленный со страницы сайта, или "Blue " с пробелом в конце, выглядит идентично чистому значению, но проваливает любое точное сравнение — так одна и та же категория создаётся дважды, а проверка на дубли не срабатывает никогда.

Перед загрузкой: проверка, которая ловит большую часть таких случаев

1

Откройте файл один раз как обычный текст

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

2

Убедитесь, что разделитель именно тот, который вы предполагаете

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

3

Проверьте одну строку с запятой, кавычкой и переносом строки

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

4

Запустите небольшую партию перед всем файлом

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

5

Решайте, что значит «готово», для каждой строки, а не для файла

Единственный вердикт «прошло/не прошло» для всего файла ничего не говорит о том, какие строки исправлять. Требуйте результат по каждой строке — создана, обновлена, пропущена, не удалась и почему, — прежде чем доверять импортёру что-то важное.

Как это устроено в Olmira

Модуль импорта файлов Olmira построен именно с учётом этого списка: строгий парсер RFC 4180, который справляется с запятыми в кавычках и переносами строк внутри значений, автоматическое удаление начального BOM в UTF-8, а слишком большие файлы отклоняются сразу, а не обрезаются молча. Строка, у которой число столбцов не совпадает с заголовком, падает сама по себе, не прерывая обработку остальных, а ключ дедупликации означает, что повторная загрузка одного и того же файла обновляет или пропускает существующие записи — по выбранной вами политике — вместо того, чтобы дублировать их.

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

Импортируйте один раз и правильно

Бесплатный 30-дневный пробный период. Перенесите свои данные, когда будете готовы.