मान लीजिए कि आपके पास 2 फ़ील्ड: ID और ईमेल के साथ एक CSV फ़ाइल है। आपके पास 2 फ़ील्ड्स के साथ एक और फ़ाइल है: ईमेल और नाम। आप ईमेल पर शामिल हुए तीनों क्षेत्रों की फ़ाइल कैसे बना सकते हैं?
मान लीजिए कि आपके पास 2 फ़ील्ड: ID और ईमेल के साथ एक CSV फ़ाइल है। आपके पास 2 फ़ील्ड्स के साथ एक और फ़ाइल है: ईमेल और नाम। आप ईमेल पर शामिल हुए तीनों क्षेत्रों की फ़ाइल कैसे बना सकते हैं?
जवाबों:
संशोधन 3 :
आपको ईमेल पर दोनों सूचियों को वर्णानुक्रम में सॉर्ट करना होगा, फिर सम्मिलित हों। यह देखते हुए कि ईमेल फ़ाइल 1 के 2 क्षेत्र और फ़ाइल 2 के 1 क्षेत्र को देखता है:
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: 2 वें क्षेत्र पर वर्ण प्रकार -k 1,1: प्रथम क्षेत्र पर वर्ण क्रमबद्ध -1 2: फ़ाइल 1, 2 क्षेत्र -2 1: फ़ाइल 2, 1 फ़ील्ड >: फाइल करने के लिए आउटपुट
पैदा करता है
ईमेल, आईडी, नाम ईमेल, आईडी, नाम ...
वर्णानुक्रम में ईमेल द्वारा क्रमबद्ध किया गया।
ध्यान दें कि यदि कोई भी ईमेल या तो फ़ाइल से गायब है तो उसे परिणामों से हटा दिया जाएगा।
शायद यह ओवरकिल है, लेकिन आप एक डेटाबेस (जैसे ओपनऑफिस बेस) को दो प्रकार की तालिकाओं में आयात कर सकते हैं और एक रिपोर्ट को परिभाषित कर सकते हैं जो वांछित आउटपुट है।
यदि CSV आयात एक समस्या है, तो एक स्प्रेडशीट प्रोग्राम (जैसे OpenOffice Calc) आयात कर सकता है। फिर परिणाम आसानी से डेटाबेस में स्थानांतरित किया जा सकता है।
भविष्य के संदर्भ के रूप में आप AWK के साथ खेलना शुरू कर सकते हैं । यह एक बहुत ही सरल छोटी स्क्रिप्टिंग भाषा है जो हर * निक्स प्रणाली पर किसी न किसी रूप में मौजूद है और इसका एकमात्र मिशन जीवन है मानक सीमांकित पाठ डेटाबेस का हेरफेर है। थकाऊ स्क्रिप्ट की कुछ पंक्तियों के साथ आप कुछ बहुत उपयोगी चीजें कर सकते हैं। भाषा छोटी और सुरुचिपूर्ण है और किसी भी अन्य चीज़ से बेहतर उपयोगिता / जटिलता अनुपात है जिससे मैं अवगत हूं।
गो का उपयोग करें: 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 क्रंचर आज़माएं ।
यह 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)"
उपकरण को जावा 8 या बाद के संस्करण की आवश्यकता है।
कुछ फायदे:
join
समाधानों की तुलना में उपयोग करने और समझने में आसान है ।डिस्क्लेमर: मैंने वह टूल लिखा है। Google कोड बंद होने के बाद यह अव्यवस्थित हुआ करता था, लेकिन मैंने इसे पुनर्जीवित किया और जैसे ही मैंने इसका उपयोग किया, नई सुविधाएँ जोड़ीं।
आप LibreOffice जैसे स्प्रेडशीट प्रोग्राम के साथ CSV फ़ाइल को पढ़ सकते हैं और VLOOKUP()
दूसरी फ़ाइल में नाम खोजने के लिए मैक्रो का उपयोग कर सकते हैं।
आप विशेष रूप से csv फ़ाइलों में शामिल होने के लिए डिज़ाइन किए गए टूल का भी उपयोग कर सकते हैं, जैसे कि https://filerefinery.com पर पाया गया
वर्तमान में हम जिन कार्यों का समर्थन करते हैं, वे हैं: सीएसवी फाइलें जोड़ना। बाहरी, आंतरिक, बाएँ और दाएँ दो SQL फ़ाइलों पर शामिल होने के लिए SQL समतुल्य प्रदर्शन करना संभव है। प्रत्येक फाइल में कौन सी कॉलम जॉइन की जाती है यह कंफर्टेबल है।