CSV - Как сопоставить аналогичные данные и объединить файлы с пакетом? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два CSV-файла, которые мне нужно объединить, чтобы их можно было правильно прочитать. Проблема, с которой я сталкиваюсь, заключается в сопоставлении координирующих данных до / после объединения.

Мне нужно сопоставить данные так, чтобы диаграмма была отсортирована. Это сложно объяснить, но я привел пример, чтобы помочь объяснить, для чего я иду.

В файлах CSV у меня есть несколько столбцов, которые я пытаюсь объединить, например, первый файл CSV выглядит примерно так:

"ID","Ver","P/N"
"2000-00","3","abc"
"2001-00","1","acd"
"2001-01","5","acd"
"3111-00","2","xyz"

Мой второй CSV-файл выглядит примерно так:

"Number","Name"
"1000-00_efg_Ver-1","efg"
"2000-00_abc_Ver-3","abc"
"2001-00_acd_Ver-1","acd"
"3111-00_xyz_Ver-2","xyz"
"4290-01_lmn_Ver-2","lmn"

Я бы хотел иметь возможность запустить скрипт для объединения файлов CSV в один файл CSV, подобный следующему:

ID,Ver,P/N,Number,Name
2000-00,3,abc,2000-00_abc_Ver-3 /abc,abc
2001-00,1,acd,2001-00_acd_Ver-1 /acd,acd
3111-00,2,xyz,3111-00_xyz_Ver-2 /xyz,xyz

Таким образом, сценарий (не должен быть пакетным, но предпочтительным) будет объединять только соответствующие столбцы и отбрасывать все остальные данные.

Любая помощь в том, как это сделать, будет принята с благодарностью.

-

EDIT:

После того, как вы немного осмотритесь в Интернете, имеет ли смысл импортировать мои данные в базу данных, выполнить запрос, а затем экспортировать запрос в виде файла CSV?

Это должно работать, но если я делаю это таким образом, мне нужно иметь возможность запускать команды удаленно в определенное время в день.

-

1 Ответ

0 голосов
/ 26 апреля 2018

Обычно я хотел бы, чтобы вы попытались написать код, поскольку SO не является службой написания кода.
С файлами с именами first.csv, second.csv и third.csv

Эта партия должна делать:

:: Q:\Test\2018\04\26\SO50049573.cmd
@Echo off
( Echo:ID,Ver,P/N,Number,Name
  for /f "skip=1 tokens=1-3 delims=," %%A in (first.csv) do (
      findstr "^\"%%~A_%%~C_Ver-%%~B\""  second.csv >nul 2>&1 && (
          Echo:%%~A,%%~B,%%~C,%%~A_%%~C_Ver-%%~B /%%~C,%%~C
      )
  )
) >third.csv 

Пример вывода

> type third.csv
ID,Ver,P/N,Number,Name
2000-00,3,abc,2000-00_abc_Ver-3 /abc,abc
2001-00,1,acd,2001-00_acd_Ver-1 /acd,acd
3111-00,2,xyz,3111-00_xyz_Ver-2 /xyz,xyz

  • Поскольку представленный контент полностью избыточен, нет необходимости читать столбцы из second.csv
  • findstr просто проверяет, присутствует ли созданное Имя
  • и, если найдено, создает выходную строку в соответствии с запросом.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...