Перейти к инструменту
ViewCSV
Без загрузки на сервер

Объединить CSV-файлы: склеить строки или соединить по ключу

2 файла
  1. customers.csv8 строк · customer_id, name, country, segment
  2. invoices.csv10 строк · customer_id, invoice_no, total, paid
Способ объединения
Результат
Результат
#customer_idnamecountrysegmentinvoice_nototalpaid
100301Наталья ФёдоровРоссияeducation···
200302Александр МорозовРоссияbusiness···
300303Михаил СоколовРоссияretail···
400304Елена КузнецовРоссияeducation···
500305Ольга СоколовРоссияeducation···
600306Иван ПоповРоссияeducation···
700307Иван МорозовРоссияeducation···
800308Татьяна ВолковРоссияretail···
900301···INV-2400621.37true
1000306···INV-2401355.94true
1100307···INV-240271.01true
1200307···INV-2403126.99true
1300308···INV-2404477.83true
1400306···INV-2405821.04false
1500309···INV-2406253.18true
1600301···INV-2407583.96true
1700305···INV-2408809.80false
1800305···INV-2409560.00false

18 строк · 7 столбцы

Чтобы объединить CSV-файлы, добавьте два или больше файлов и выберите способ объединения. Склеить строки ставит строки всех файлов друг под другом в одну таблицу и сопоставляет столбцы по названию, так что столбец, который есть только в некоторых файлах, сохраняется и остаётся пустым в строках остальных; именно это обычно и нужно, когда собирают вместе помесячные или региональные выгрузки. Соединить по ключу ставит два файла бок о бок по одному или нескольким ключевым столбцам, как ВПР в электронной таблице, и сообщает, сколько строк совпало, какие ключи повторяются и сколько лишних строк из-за этого появилось. Объединённая таблица обновляется при каждом изменении настроек, а файлы объединяются в вашем браузере и никогда не загружаются на сервер.

Как объединить CSV-файлы

  1. Добавьте файлы. У каждого автоматически определяются разделитель и кодировка, а первая строка считается строкой заголовков. В списке видно число строк и первые столбцы каждого файла; перемещайте файлы вверх и вниз, чтобы задать порядок.
  2. Выберите «Склеить строки», чтобы поставить строки всех файлов одну за другой, или «Соединить по ключу», чтобы сопоставить строки первых двух файлов по ключу.
  3. Проверьте предпросмотр и уведомления над ним, затем скачайте результат в 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 есть только в одном из файлов, поэтому в строках другого файла там пусто, а артикулы сохраняют ведущие нули.

CSV
march.csv
sku,name,qty
00123,"Desk lamp, brass",4
00456,Shelf,2

april.csv
sku,qty,warehouse
00789,10,North
00456,2,
merged.csv
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 и удалите там дубликаты по ключевому столбцу.

Почему при сопоставлении по порядку значения оказались под чужим заголовком?

Режим «По порядку» не смотрит на названия и берёт заголовки из файла с наибольшим числом столбцов. Если в одном файле есть столбец, которого нет в других, все последующие значения сдвигаются. Переключитесь на сопоставление по названиям.

Стандарты и справочные материалы