Чтобы объединить CSV-файлы, добавьте два или больше файлов и выберите способ объединения. Склеить строки ставит строки всех файлов друг под другом в одну таблицу и сопоставляет столбцы по названию, так что столбец, который есть только в некоторых файлах, сохраняется и остаётся пустым в строках остальных; именно это обычно и нужно, когда собирают вместе помесячные или региональные выгрузки. Соединить по ключу ставит два файла бок о бок по одному или нескольким ключевым столбцам, как ВПР в электронной таблице, и сообщает, сколько строк совпало, какие ключи повторяются и сколько лишних строк из-за этого появилось. Объединённая таблица обновляется при каждом изменении настроек, а файлы объединяются в вашем браузере и никогда не загружаются на сервер.
Как объединить CSV-файлы
- Добавьте файлы. У каждого автоматически определяются разделитель и кодировка, а первая строка считается строкой заголовков. В списке видно число строк и первые столбцы каждого файла; перемещайте файлы вверх и вниз, чтобы задать порядок.
- Выберите «Склеить строки», чтобы поставить строки всех файлов одну за другой, или «Соединить по ключу», чтобы сопоставить строки первых двух файлов по ключу.
- Проверьте предпросмотр и уведомления над ним, затем скачайте результат в CSV или откройте его в редакторе CSV, чтобы продолжить работу.
Строки идут в порядке списка файлов: сначала все строки первого файла, затем все строки второго и так далее. Чтобы объединить много ежемесячных выгрузок, добавьте их все сразу и включите столбец с именем файла — тогда в каждой строке будет видно, из какого файла она взята.
Склейка: файлы с разными столбцами
При склейке столбцы можно выровнять тремя способами. Выберите тот, который соответствует различиям между вашими файлами.
| «По названиям (все столбцы)» (по умолчанию) | В результате есть все заголовки из всех файлов в порядке первого появления. Если в файле какого-то столбца нет, в его строках там будет пустое значение. Названия должны совпадать в точности: SKU и sku станут двумя столбцами. |
|---|---|
| «Столбцы должны совпадать» | Останавливается с ошибкой и называет первый файл, у которого заголовки отличаются названием, количеством или порядком. Подходит, когда все файлы должны быть из одной и той же выгрузки и переименованный столбец означает, что что-то пошло не так. |
| «По порядку» | Столбец 1 идёт под столбец 1 и так далее. Заголовки берутся из файла с наибольшим числом столбцов, а в более коротких файлах в конце добавляются пустые значения. Используйте этот способ, только если в файлах нет пригодных заголовков или структура одинакова при разных названиях. |
| Столбец с именем файла | Добавляет последний столбец — по умолчанию source_file, — где для каждой строки указано имя её файла. Такое название не должно уже быть среди заголовков. |
| Удаление полностью повторяющихся строк | После склейки удаляет каждую строку, идентичную одной из предыдущих, и сообщает, сколько удалено. Остаётся первая копия. Значения должны совпадать в точности, включая регистр и пробелы; столбец с именем файла не учитывается, так что одна и та же строка из двух файлов считается дубликатом. |
Если в одном из файлов есть лишний или переставленный столбец, сопоставление по порядку поставит значения под чужой заголовок: в примере ниже апрельский qty оказался бы под name. Сопоставление по названиям исключает это, если у файлов есть заголовки.
Соединение двух файлов по ключу
Для соединения левым и правым файлом служат первые два файла списка. Выберите одну или несколько пар ключевых столбцов; в паре названия могут различаться, например customer_id слева и id справа. Если пар несколько, строки совпадают, только когда совпадает каждая пара.
| Левое соединение — «Все строки первого файла» (по умолчанию) | Все левые строки; столбцы правого файла заполнены там, где ключ совпал, и пусты там, где нет. |
|---|---|
| Внутреннее соединение — «Только строки, найденные в обоих» | Только левые строки, ключ которых найден в правом файле. |
| Правое соединение — «Все строки второго файла» | Все правые строки: совпавшие — в порядке левого файла, за ними правые строки без совпадений. |
| Полное соединение — «Все строки обоих файлов» | Все строки обоих файлов: результат левого соединения, а за ним правые строки без совпадений. |
| «Не учитывать в ключах регистр и пробелы по краям» | C02 совпадает с c02. В результат записывается текст ключа из левого файла. |
В результате сначала идут все столбцы левого файла, затем столбцы правого, кроме его ключевых. Если название правого столбца уже занято, к нему добавляется (2), например total (2), а переименованные столбцы перечислены в уведомлениях. Для правой строки без совпадений ключ записывается в ключевой столбец левого файла, а остальные левые столбцы остаются пустыми.
Если ключ встречается в правом файле несколько раз, каждая совпавшая левая строка повторяется по разу на каждое совпадение. Уведомления показывают число совпавших строк, строк только слева и только справа, повторяющиеся ключи с каждой стороны и число добавленных строк — так сразу видно, если поиск, который должен быть «один к одному», таким не является.
Значения, заголовки и разные разделители
- Значения — это текст, они остаются в точности как записаны, поэтому
00123сохраняет ведущие нули. Ключи тоже сравниваются как текст:00123и123не совпадают, даже если регистр и пробелы не учитываются. - Разделители, кавычки и переносы строк внутри значений читаются по RFC 4180 и при скачивании снова берутся в кавычки, где это нужно.
- В пределах одного файла пустой заголовок становится
Column 3, а повторяющийся —name (2). Эти сгенерированные названия участвуют в сопоставлении по названиям наравне с остальными. - У файлов могут быть разные разделители и кодировки — каждый определяется отдельно. Скачанный файл использует разделитель-запятую, а окончания строк и кодировка берутся из первого файла списка. Кодировки, которые браузер не умеет записывать, например Shift_JIS, сохраняются в UTF-8.
Проблемы при склейке и соединении
- Столбцы повторяются с чуть разными названиями. В файлах заголовок написан по-разному (
Emailиemailили с пробелом в конце). Перед объединением переименуйте один из них в инструменте «Переименование и перестановка столбцов CSV» или, если структура одинакова, выберите сопоставление по порядку. - Соединение почти ничего не нашло. Проверьте, что ключи записаны в обоих файлах одинаково: ведущие нули, префиксы и пробелы имеют значение. Включите «Не учитывать в ключах регистр и пробелы по краям» или сначала удалите пробелы в столбце с помощью очистки данных CSV.
- После соединения строк больше, чем в левом файле. В правом файле ключ повторяется; уведомления показывают, сколько ключей повторяется и сколько лишних строк из-за них появилось. Удалите дубликаты или выберите более точную пару ключей.
- Объединённая таблица превышает лимит браузера. В результате может быть не больше 100 000 строк и 2 млн ячеек. Сначала отфильтруйте исходные файлы или объединяйте меньше файлов за раз.
Ограничения объединения и конфиденциальность
Каждый файл может занимать до 25 МБ, 100 000 строк, 250 столбцов и 2 млн ячеек, и для результата склейки или соединения действует тот же лимит — 100 000 строк и 2 млн ячеек. Объединение не потоковое: каждый файл загружается в память.
Файлы читаются в фоновом обработчике в этой вкладке и объединяются в вашем браузере. На сервер они никогда не отправляются. Чтобы не объединять две версии файла, а найти различия между ними, воспользуйтесь сравнением CSV-файлов; чтобы разрезать один файл на несколько — разделением CSV-файлов.
Пример: склейка двух файлов остатков с разными столбцами
Две выгрузки остатков с разными столбцами, склеенные по названиям с включённым столбцом имени файла. name и warehouse есть только в одном из файлов, поэтому в строках другого файла там пусто, а артикулы сохраняют ведущие нули.
march.csv sku,name,qty 00123,"Desk lamp, brass",4 00456,Shelf,2 april.csv sku,qty,warehouse 00789,10,North 00456,2,
sku,name,qty,warehouse,source_file 00123,"Desk lamp, brass",4,,march.csv 00456,Shelf,2,,march.csv 00789,,10,North,april.csv 00456,,2,,april.csv
Вопросы и ответы
Можно ли соединить больше двух файлов?
За один шаг — нет. Для соединения берутся первые два файла списка. Скачайте или откройте результат и соедините его со следующим файлом. У склейки такого ограничения нет: она ставит друг под другом все добавленные файлы.
Удаление повторяющихся строк сравнивает только ключевой столбец?
Нет. Строка удаляется, только если все её значения в точности совпадают с одной из предыдущих строк. Чтобы оставить по одной строке на идентификатор, пропустите результат через очистку данных CSV и удалите там дубликаты по ключевому столбцу.
Почему при сопоставлении по порядку значения оказались под чужим заголовком?
Режим «По порядку» не смотрит на названия и берёт заголовки из файла с наибольшим числом столбцов. Если в одном файле есть столбец, которого нет в других, все последующие значения сдвигаются. Переключитесь на сопоставление по названиям.