Как проверять CSV перед загрузкой в базу

Проверка структуры, типов, кодировки и ошибочных строк с воспроизводимым отчетом импорта.

Практическое решение · 3 мин чтения
Как проверять CSV перед загрузкой в базу — tarasovcode
Инженерия данныхКак проверять CSV перед загрузкой в базу

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

Что подготовить

  • Исходный файл без ручного пересохранения, описание колонок и пример корректной записи.
  • Разделитель, кодировка, правила кавычек и представление пустого значения.
  • Правила уникальности, диапазонов и обязательных полей целевой системы.

Порядок работы

  1. Сохраните исходник и его контрольное значение, затем исследуйте небольшую выборку строк и заголовок.
  2. Разбирайте файл парсером формата, учитывающим кавычки и переносы внутри полей. Простое разделение строки по запятой недостаточно.
  3. Применяйте явную схему типов. Коды с ведущими нулями и длинные идентификаторы обычно требуют сохранения текстового представления.
  4. Разделите структурные ошибки и нарушения правил данных; сформируйте отчет с номером записи и причиной.
  5. Загружайте проверенные строки в промежуточный слой, сверяйте количество и только затем применяйте согласованное обновление.

Разобранный пример

Код 00127 должен остаться строкой, а сумма «1 250,50» требует согласованного правила локального формата. Строка с адресом в кавычках содержит запятую и не должна создавать дополнительную колонку. Эти три случая включаются в приемочную выборку.

Как проверить результат

  • Число принятых и отклоненных записей объясняет весь входной набор.
  • Кавычки, многострочный текст и ведущие нули сохраняются согласно схеме.
  • Повтор импорта того же файла имеет определенное поведение без случайных дублей.

Если что-то пошло не так

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

Схема отклонений импорта

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

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

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

Промпт для разбора ваших материалов

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

Частые вопросы

Можно ли сразу открыть и сохранить файл в редакторе?

Это может изменить представление дат и идентификаторов. Сначала сохраните оригинал и определите схему.

Нужно ли отклонять весь файл из-за одной строки?

Правило зависит от целостности операции. Выберите атомарный импорт либо явно разрешенную частичную загрузку с отчетом.

Материал библиотеки решений Ильи Тарасова / TarasovWeb.

О проекте

Практическая библиотека Ильи Тарасова и TarasovWeb. Telegram-канал · Личная страница · ВКонтакте.

#tarasovweb #ИльяТарасов