Русский

Данные и таблицы · CSV Очиститель

CSV Экранирование диалектов: двойные кавычки, обратная косая черта и экспорт базы данных

· Фон

csv анализ совместимость

Путь CSV в двойных кавычках успешен, а escape-символ обратной косой черты остается буквальным текстом.
Оригинальная векторная иллюстрация ToolAcre

RFC 4180 говорит удвоить кавычку; некоторые инструменты баз данных вместо этого экспортируют с обратной косой чертой. В этом посте объясняются существующие в обращении соглашения об экранировании, откуда они взялись и почему файл, действительный на одном диалекте, нарушается на другом.

Экспорт базы данных, который электронная таблица читает с случайными обратными косыми чертами — две ускользающие традиции, сталкивающиеся в одном файле

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

ToolAcre поддерживает одно четкое правило: поля можно заключать в двойные кавычки, а внутренняя кавычка представляется двумя кавычками. Обратная косая черта не имеет escape-роли. Определить этот контракт перед загрузкой безопаснее, чем просить уборщика угадать, какой знак препинания имел в виду производитель.

Соглашение RFC — заключайте в двойные кавычки и удваивайте любую внутреннюю кавычку, вообще без escape-символов.

Для такого значения, как `She said "hello", then left`, CSV в стиле RFC окружает поле и дважды записывает внутренние метки. Разделитель остается внутри состояния кавычек, и каждая удвоенная пара возвращает одну буквальную кавычку. Сериализация применяет то же преобразование в обратном порядке.

Поля заключаются в кавычки, если они содержат текущий разделитель, кавычку, LF, CR или окружающие пробелы, а также всякий раз, когда выбран параметр «Кавычать каждое поле». Отдельного escape-символа не существует. Эта небольшая грамматика проверена на наличие разделителей, встроенных окончаний записей и пар кавычек.

Традиция C — кавычки с обратной косой чертой, символы новой строки и разделители, унаследованные от языков программирования и некоторых загрузчиков баз данных.

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

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

Экранирование обратной косой черты — это неподдерживаемый альтернативный диалект, а не режим, который ToolAcre может читать.

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

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

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

В этом парсере `"a \"quote\"",b` не означает того, что может ожидать читатель в стиле C, поскольку косые черты остаются в тексте, а кавычки управляют состоянием CSV. И наоборот, удвоенная пара внутри поля в кавычках становится одной кавычкой, а не двумя буквальными символами.

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

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

Запишите одну ячейку, содержащую запятую и кавычку, как RFC CSV: `"She said ""hi"", then left"`. ToolAcre возвращает точное значение `She said "hi", then left`. Вместо этого напишите внутреннюю кавычку с обратной косой чертой и обратите внимание, что косая черта не имеет специальной защиты.

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

Чего это не касается — двоичный экспорт, файлы фиксированной ширины и полностью настраиваемые escape-символы.

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

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

Знайте диалект с обеих сторон — как ToolAcre CSV очиститель цитирования нормализует поля для согласованного цитирования, которое считывают стандартные парсеры.

Знайте обе конечные точки. ToolAcre подходит, когда источник следует за CSV в двойной кавычке или когда другой синтаксический анализатор уже нормализовал другой диалект в проверенные ячейки. Его выходные данные обеспечивают согласованное минимальные кавычки или кавычки для всех полей и удваивают каждую встроенную кавычку.

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