Scalanie bardzo dużych plików csv ze wspólną kolumną

Na przykład mam dwa pliki csv, 0.csv

100a,a,b,c,c
200a,b,c,c,c
300a,c,d,c,c

i 1.csv

100a,Emma,Thomas
200a,Alex,Jason
400a,Sanjay,Gupta
500a,Nisha,Singh

i chcę, żeby wyjście było podobne

100a,a,b,c,c,Emma,Thomas
200a,b,c,c,c,Alex,Jason
300a,c,d,c,c,0,0
400a,0,0,0,0,Sanjay,Gupta
500a,0,0,0,0,Nisha,Singh

Jak to zrobić w skryptach powłoki Unix lub Perlu? Znam komendę „dołącz” unixa, która działałaby dobrze z małymi plikami. Na przykład, aby uzyskać mój wynik, mógłbym to zrobić

join -t , -a 1 -a 2 -1 1 -2 1 -o 0 1.2 1.3 1.4 1.5 2.2 2.3 -e "0" 0.csv 1.csv

ale dla moich celów nie jest to wykonalne, ponieważ mój rzeczywisty plik danych ma ponad milion kolumn (całkowity rozmiar danych w gigabajtach), a zatem moje polecenie unixowe miałoby także ponad milion znaków. To może być najważniejszy ból głowy, ponieważ nieefektywny kod zostaje szybko ugrzęznięty.

Zauważ również, że potrzebuję znaku zastępczego „0”, gdy brakuje danych. Zapobiega to po prostu temu

join -t , -a 1 -a 2 -1 1 -2 1 0.csv 1.csv

Również początkujący programista Perl, więc niektóre szczegóły naprawdę mile widziane. Wolałbym, aby rozwiązanie było perlem lub skryptem powłoki, ale tak naprawdę wszystko, co działa, byłoby w porządku.

questionAnswers(5)

yourAnswerToTheQuestion