- Редактируем CSV-файлы, чтобы не сломать данные
- Что такое CSV-файлы
- Как Excel портит данные: из классики
- Побеждаем порчу данных правильным импортом
- Альтернатива: Open Office Calc
- Бонус-трек: проблемы при сохранении из Calc в .xlsx
- Что значит выгрузить csv
- Что такое CSV?
- Экспорт информационных блоков (без выгрузки цены и валюты)
- Структура файла выгрузки
- Импорт CSV
- Возможные проблемы при импорте или экспорте данных
Редактируем CSV-файлы, чтобы не сломать данные
Продукты HFLabs в промышленных объемах обрабатывают данные: адреса, ФИО, реквизиты компаний и еще вагон всего. Естественно, тестировщики ежедневно с этими данными имеют дело: обновляют тест-кейсы, изучают результаты очистки. Часто заказчики дают «живую» базу, чтобы тестировщик настроил сервис под нее.
Первое, чему мы учим новых QA — сохранять данные в первозданном виде. Все по заветам: «Не навреди». В статье я расскажу, как аккуратно работать с CSV-файлами в Excel и Open Office. Советы помогут ничего не испортить, сохранить информацию после редактирования и в целом чувствовать себя увереннее.
Материал базовый, профессионалы совершенно точно заскучают.
Что такое CSV-файлы
Формат CSV используют, чтобы хранить таблицы в текстовых файлах. Данные очень часто упаковывают именно в таблицы, поэтому CSV-файлы очень популярны.
CSV-файл состоит из строк с данными и разделителей, которые обозначают границы столбцов
CSV расшифровывается как comma-separated values — «значения, разделенные запятыми». Но пусть название вас не обманет: разделителями столбцов в CSV-файле могут служить и точки с запятой, и знаки табуляции. Это все равно будет CSV-файл.
У CSV куча плюсов перед тем же форматом Excel: текстовые файлы просты как пуговица, открываются быстро, читаются на любом устройстве и в любой среде без дополнительных инструментов.
Из-за своих преимуществ CSV — сверхпопулярный формат обмена данными, хотя ему уже лет 40. CSV используют прикладные промышленные программы, в него выгружают данные из баз.
Одна беда — текстового редактора для работы с CSV мало. Еще ничего, если таблица простая: в первом поле ID одной длины, во втором дата одного формата, а в третьем какой-нибудь адрес. Но когда поля разной длины и их больше трех, начинаются мучения.
Следить за разделителями и столбцами — глаза сломаешь
Еще хуже с анализом данных — попробуй «Блокнотом» хотя бы сложить все числа в столбце. Я уж не говорю о красивых графиках.
Поэтому CSV-файлы анализируют и редактируют в Excel и аналогах: Open Office, LibreOffice и прочих.
Ветеранам, которые все же дочитали: ребята, мы знаем об анализе непосредственно в БД c помощью SQL, знаем о Tableau и Talend Open Studio. Это статья для начинающих, а на базовом уровне и небольшом объеме данных Excel с аналогами хватает.
Как Excel портит данные: из классики
Все бы ничего, но Excel, едва открыв CSV-файл, начинает свои лукавые выкрутасы. Он без спроса меняет данные так, что те приходят в негодность. Причем делает это совершенно незаметно. Из-за этого в свое время мы схватили ворох проблем.
Большинство казусов связано с тем, что программа без спроса преобразует строки с набором цифр в числа.
Округляет. Например, в исходной ячейке два телефона хранятся через запятую без пробелов: «5235834,5235835». Что сделает Excel? Лихо превратит номера́ в одно число и округлит до двух цифр после запятой: «5235834,52». Так мы потеряем второй телефон.
Приводит к экспоненциальной форме. Excel заботливо преобразует «123456789012345» в число «1,2E+15». Исходное значение потеряем напрочь.
Проблема актуальна для длинных, символов по пятнадцать, цифровых строк. Например, КЛАДР-кодов (это такой государственный идентификатор адресного объекта: го́рода, у́лицы, до́ма).
Удаляет лидирующие плюсы. Excel считает, что плюс в начале строки с цифрами — совершенно лишний символ. Мол, и так ясно, что число положительное, коль перед ним не стоит минус. Поэтому лидирующий плюс в номере «+74955235834» будет отброшен за ненадобностью — получится «74955235834». (В реальности номер пострадает еще сильнее, но для наглядности обойдусь плюсом).
Потеря плюса критична, например, если данные пойдут в стороннюю систему, а та при импорте жестко проверяет формат.
Разбивает по три цифры. Цифровую строку длиннее трех символов Excel, добрая душа, аккуратно разберет. Например, «8 495 5235834» превратит в «84 955 235 834».
Форматирование важно как минимум для телефонных номеров: пробелы отделяют коды страны и города от остального номера и друг от друга. Excel запросто нарушает правильное членение телефона.
Удаляет лидирующие нули. Строку «00523446» Excel превратит в «523446».
А в ИНН, например, первые две цифры — это код региона. Для Республики Алтай он начинается с нуля — «04». Без нуля смысл номера исказится, а проверку формата ИНН вообще не пройдет.
Меняет даты под локальные настройки. Excel с удовольствием исправит номер дома «1/2» на «01.фев». Потому что Windows подсказал, что в таком виде вам удобнее считывать даты.
Побеждаем порчу данных правильным импортом
Если серьезно, в бедах виноват не Excel целиком, а неочевидный способ импорта данных в программу.
По умолчанию Excel применяет к данным в загруженном CSV-файле тип «General» — общий. Из-за него программа распознает цифровые строки как числа. Такой порядок можно победить, используя встроенный инструмент импорта.
Запускаю встроенный в Excel механизм импорта. В меню это «Data → Get External Data → From Text».
Выбираю CSV-файл с данными, открывается диалог. В диалоге кликаю на тип файла Delimited (с разделителями). Кодировка — та, что в файле, обычно определяется автоматом. Если первая строка файла — шапка, отмечаю «My Data Has Headers».
Перехожу ко второму шагу диалога. Выбираю разделитель полей (обычно это точка с запятой — semicolon). Отключаю «Treat consecutive delimiters as one», а «Text qualifier» выставляю в «
На третьем шаге выбираю формат полей, ради него все и затевалось. Для всех столбцов выставляю тип «Text». Кстати, если кликнуть на первую колонку, зажать шифт и кликнуть на последнюю, выделятся сразу все столбцы. Удобно.
Дальше Excel спросит, куда вставлять данные из CSV — можно просто нажать «OK», и данные появятся в открытом листе.
Перед импортом придется создать в Excel новый workbook
Но! Если я планирую добавлять данные в CSV через Excel, придется сделать еще кое-что.
После импорта нужно принудительно привести все-все ячейки на листе к формату «Text». Иначе новые поля приобретут все тот же тип «General».
- Нажимаю два раза Ctrl+A, Excel выбирает все ячейки на листе;
- кликаю правой кнопкой мыши;
- выбираю в контекстном меню «Format Cells»;
- в открывшемся диалоге выбираю слева тип данных «Text».
Чтобы выделить все ячейки, нужно нажать Ctrl+A два раза. Именно два, это не шутка, попробуйте
После этого, если повезет, Excel оставит исходные данные в покое. Но это не самая твердая гарантия, поэтому мы после сохранения обязательно проверяем файл через текстовый просмотрщик.
Альтернатива: Open Office Calc
Для работы с CSV-файлами я использую именно Calc. Он не то чтобы совсем не считает цифровые данные строками, но хотя бы не применяет к ним переформатирование в соответствии с региональными настройками Windows. Да и импорт попроще.
Конечно, понадобится пакет Open Office (OO). При установке он предложит переназначить на себя файлы MS Office. Не рекомендую: хоть OO достаточно функционален, он не до конца понимает хитрое микрософтовское форматирование документов.
А вот назначить OO программой по умолчанию для CSV-файлов — вполне разумно. Сделать это можно после установки пакета.
Итак, запускаем импорт данных из CSV. После двойного клика на файле Open Office показывает диалог.
Заметьте, в OO не нужно создавать новый воркбук и принудительно запускать импорт, все само
- Кодировка — как в файле.
- «Разделитель» — точка с запятой. Естественно, если в файле разделителем выступает именно она.
- «Разделитель текста» — пустой (все то же, что в Excel).
- В разделе «Поля» кликаю в левый-верхний квадрат таблицы, подсвечиваются все колонки. Указываю тип «Текст».
Штука, которая испортила немало крови: если по ошибке выбрать несколько разделителей полей или не тот разделитесь текста, файл может правильно открыться, но неправильно сохраниться.
Помимо Calc у нас в HFLabs популярен libreOffice, особенно под «Линуксом». И то, и другое для CSV применяют активнее, чем Excel.
Бонус-трек: проблемы при сохранении из Calc в .xlsx
Если сохраняете данные из Calc в экселевский формат .xlsx, имейте в виду — OO порой необъяснимо и масштабно теряет данные.
Белая пустошь, раскинувшаяся посередине, в оригинальном CSV-файле богато заполнена данными
Поэтому после сохранения я еще раз открываю файл и убеждаюсь, что данные на месте.
Если что-то потерялись, лечение — пересохранить из CSV в .xlsx. Или, если установлен Windows, импортнуть из CSV в Excel и сохранить оттуда.
После пересохранения обязательно еще раз проверяю, что все данные на месте и нет лишних пустых строк.
Если интересно работать с данными, посмотрите на наши вакансии. HFLabs почти всегда нужны аналитики, тестировщики, инженеры по внедрению, разработчики. Данными обеспечим так, что мало не покажется 🙂
Источник
Что значит выгрузить csv
Внимание! Если Вы пользуетесь данным способом импорта впервые, пожалуйста сделайте резервную копию инфоблока, с которым Вы ведете работу. При утере данных, наша техническая поддержка не сможет помочь с их восстановлением.
Что такое CSV?
CSV — это формат, открывающийся программой Excel. Данный формат используется для экспорта/импорта многими cms и различными сервисами.
В битриксе есть встроенный импорт/экспорт данных. Выгрузить можно любую динамическую информацию, т.е. любой инфоблок. Также Вы можете настроить поля, которые нужно выгружать/загружать.
Экспорт информационных блоков (без выгрузки цены и валюты)
Примечание: Для импорта/экспорта каталога с ценами и валютой воспользуйтесь импортом через вкладку: Администрирование — Магазин — Экспорт данных — Экспорт CSV NEW
Для выгрузки инфоблока в системе администрирования перейдите на вкладку: Администрирование — Контент — Инфоблоки — Экспорт — CSV.
Шаг 1. Выбираете тип инфоблока и инфоблок для выгрузки, жмете далее.
Шаг 2. Свойства формата файлов изменять не нужно, по умолчанию все настроено правильно.
Выбираете те поля, которые хотите выгрузить.
Жирным выделены обязательные для выгрузки поля (Название и внешний код).
Советуем Вам выбирать небольшое количество свойств, т.к. после выгрузки названия свойств будут преобразованы, например IPROP34.
Если у Вас много свойств, советуем воспользоваться ctrl+f для поиска нужных.
Скроллите в самый низ, нажимаете «Начать выгрузку».
Скачиваете файл на свой компьютер.
Структура файла выгрузки
CSV файл обязательно должен содержать в себе наименование элемента и xml_id (внешний код), иначе импортировать ничего не получится.
Привязка товаров в битриксе работает по xml_id, и если в одном информационном блоке пересечется несколько одинаковых кодов, то возникнут ошибки. Поэтому xml_id должен быть уникальным.
В файле выгрузки каждое свойство имеет свой столбец, будь то код, свойство, описание или что-то другое.
Мы не советуем через выгрузку работать со множественными значениями свойств, т.к. множественные значения попадают каждый в отдельную строчку, дублируя при этом товар. Например, если у Вас всего 1000 товаров, каждый из которых имеет привязку к 2-м разделам, и Вы выгружаете это поле, то у Вас в файле будет 2000 строк.
Для наглядности прилагаем пример файла CSV
Импорт CSV
Подготовьте файл для импорта в формате CSV, разделители запятые. Пример файла CSV
Если Вы загружаете товары с ценами, то перейдите в Администрирование — Магазин — Импорт данных — Импорт CSV NEW. Минимальный список полей для импорта: Внешний код, Название, Цена, Валюта.
Если Вы загружаете товары без цен, то перейдите в Администрирование — Контент — Инфоблоки — Экспорт — CSV .минимальный список полей для импорта : Внешний код, Название.
Загрузите свой файл импорта и выберите информационный блок для загрузки
Выберите необходимые параметры. (обычно нужно только поставить галочку «первая строка содержит имена полей»)
Возможные проблемы при импорте или экспорте данных
Если на Вашем сайте используется кодировка UTF-8, то все русскоязычные наименования у Вас превратятся в «иероглифы», т.к. excel не воспринимает кодировку UTF-8.
Для исправления проблемы Вам необходимо переконвертировать файл в кодировку windows1251, а при импорте обратно в UTF-8. Сделать это можно с помощью продвинутых текcтовых редакторов, типа Php Expert Editor, Sublime Text или Open Office
Источник