Зачем вообще CSV рядом с Битриксом
Для обычного бэкапа сайта остаются mysqldump и снапшоты. Файлы с разделителями полезны, когда нужно выгрузить огромную таблицу для анализа в Excel, передать срез интегратору или залить подготовленный прайс в служебную таблицу на копии стенда. Ниже — рабочие шаблоны под MySQL/MariaDB без копирования чужих вики дословно.
Импорт: LOAD DATA INFILE
Классический вариант для CSV с заголовком в первой строке: поля в кавычках, строки с переводом строки Unix.
LOAD DATA INFILE '/var/lib/mysql-files/import.csv'
INTO TABLE my_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;Сервер читает файл на стороне MySQL, а не у клиента: путь должен быть доступен процессу mysqld. Директива secure_file_priv ограничивает, откуда можно читать и куда писать: пустая строка снимает жёсткую привязку к одному каталогу, но на продакшене чаще оставляют явный каталог вроде /var/lib/mysql-files/ и кладут туда файлы с корректными правами. После смены настройки нужен перезапуск службы.
Если видите «файл не найден» при существующем пути, проверьте владельца и права на файл (процесс сервера должен читать), а на усиленных ОС — профили вроде AppArmor/SELinux, которые режут доступ к произвольным путям.
Пустая ячейка и NULL
Текст NULL в CSV или пропуск значения (a,,c) не всегда автоматически становятся SQL‑NULL. Удобно прогнать проблемные колонки через пользовательские переменные и NULLIF:
LOAD DATA INFILE '/var/lib/mysql-files/rows.csv'
INTO TABLE my_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(col_a, col_b, @raw_c)
SET col_c = NULLIF(@raw_c, '');Для строки буквального 'NULL' из файла та же схема: NULLIF(@var, 'NULL').
Экспорт: SELECT … INTO OUTFILE
Выгрузка в файл на сервере (аналогично — укладывается в рамки secure_file_priv):
SELECT *
FROM your_table
INTO OUTFILE '/var/lib/mysql-files/export.csv'
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';На живом сайте согласуйте окно обслуживания и нагрузку: большой SELECT * держит снимок и может конкурировать с витриной. Для Битрикса разумнее гонять такие операции на реплике или ночью, а бизнес‑таблицы ядра не трогать без понимания связей и кешей.
Итог
CSV — сменный инструмент массового ввода‑вывода: быстрее ручных вставок из скрипта, но требует корректных путей, кодировки utf8mb4 и явной обработки NULL. Для переноса целого проекта по‑прежнему надёжнее полноценный дамп SQL и проверенный сценарий восстановления.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии