ID와 이메일이라는 두 개의 필드가있는 하나의 CSV 파일이 있다고 가정하십시오. 이메일과 이름이라는 두 개의 필드가있는 다른 파일이 있습니다. 세 개의 필드가 모두 이메일로 결합 된 파일을 어떻게 생성 할 수 있습니까?
ID와 이메일이라는 두 개의 필드가있는 하나의 CSV 파일이 있다고 가정하십시오. 이메일과 이름이라는 두 개의 필드가있는 다른 파일이 있습니다. 세 개의 필드가 모두 이메일로 결합 된 파일을 어떻게 생성 할 수 있습니까?
답변:
개정 3 :
이메일에서 두 목록을 알파벳순으로 정렬 한 다음 가입해야합니다. 이메일 필드 file1의 두 번째 필드와 file2의 첫 번째 필드를 가정하십시오.
sort -t , -k 2,2 file1.csv > sort1.csv
sort -t , -k 1,1 file2.csv > sort2.csv
join -t , -1 2 -2 1 sort1.csv sort2.csv > sort3.csv
매개 변수 의미
-t, : ','는 필드 구분자입니다. -k 2,2 : 두 번째 필드의 문자 정렬 -k 1,1 : 첫 번째 필드의 문자 정렬 -1 2 : 파일 1, 2 번째 필드 -2 1 : 파일 2, 첫 번째 필드 > : 파일로 출력
생산
이메일, ID, 이름 이메일, ID, 이름 ...
알파벳순으로 이메일을 기준으로 정렬합니다.
두 파일 중 하나에서 누락 된 이메일이 있으면 결과에서 생략됩니다.
향후 참고 자료로 AWK를 가지고 놀기를 원할 수도 있습니다 . 모든 * nix 시스템에 어떤 형태로 존재하는 매우 간단한 작은 스크립팅 언어이며, 유일한 임무는 삶이 표준으로 구분 된 텍스트 데이터베이스를 조작하는 것입니다. 몇 줄의 스크립트를 사용하면 매우 유용한 작업을 수행 할 수 있습니다. 언어는 작고 우아하며 내가 아는 것보다 유틸리티 / 복잡성 비율이 더 좋습니다.
Go 사용 : https://github.com/chrislusf/gleam
package main
import (
"flag"
"os"
"github.com/chrislusf/gleam"
"github.com/chrislusf/gleam/source/csv"
)
var (
aFile = flag.String("a", "a.csv", "first csv file with 2 fields, the first one being the key")
bFile = flag.String("b", "b.csv", "second csv file with 2 fields, the first one being the key")
)
func main() {
flag.Parse()
f := gleam.New()
a := f.Input(csv.New(*aFile))
b := f.Input(csv.New(*bFile))
a.Join(b).Fprintf(os.Stdout, "%s,%s,%s\n").Run()
}
CSV Cruncher를 사용해보십시오 .
CSV 파일을 SQL 테이블로 사용하고 SQL 쿼리를 허용하여 다른 CSV 또는 JSON 파일을 생성합니다.
귀하의 경우 다음과 같이 전화하십시오.
crunch -in tableA.csv tableB.csv -out output.csv \
"SELECT tableA.id, tableA.email, tableB.name
FROM tableA LEFT JOIN tableB USING (email)"
이 도구에는 Java 8 이상이 필요합니다.
장점 중 일부 :
join
기반 솔루션 보다 사용하기 쉽고 이해하기 쉽습니다 .면책 조항 : 나는 그 도구를 썼습니다. Google 코드가 닫힌 후에는 혼란 스러웠지만 사용하면서 새로운 기능을 추가하고 소생 시켰습니다.
LibreOffice와 같은 스프레드 시트 프로그램으로 CSV 파일을 읽고 VLOOKUP()
매크로를 사용 하여 두 번째 파일에서 이름을 검색 할 수 있습니다.
https://filerefinery.com 에있는 것과 같은 CSV 파일을 결합하기 위해 특별히 설계된 도구를 사용할 수도 있습니다.
현재 지원되는 작업은 다음과 같습니다. csv 파일 결합. 두 csv 파일에 대해 외부, 내부, 왼쪽 및 오른쪽 조인 작업에 해당하는 SQL을 수행 할 수 있습니다. 각 파일에서 조인 키로 사용될 열을 구성 할 수 있습니다.