CSV प्रारूप में एक फ़ाइल से प्रोलॉग डेटाबेस में तथ्य आयात करें
प्रस्तावना में डेटाबेस तथ्यों के साथ काम करने के लिए, उन्हें (तथ्य) बाहरी स्रोत से आयात किया जाना चाहिए।
आरेख पारंपरिक रूप से गतिविधि के तीन क्षेत्रों को दर्शाता है:
पीला - एक मध्यवर्ती फ़ाइल तैयार करना। सरल आयात के लिए, यह केवल CSV प्रारूप में एक दस्तावेज़ सहेज सकता है। शेड्यूल पर काम करने के लिए, समय-समय पर अनलोडिंग के लिए डेटाबेस घटकों (उदाहरण के लिए, एमएस एसक्यूएल सर्वर इंटीग्रेशन सर्विसेज) को कॉन्फ़िगर करना संभव है। इस गतिविधि को लेख में नहीं माना गया है।
लाल - एक CSV फ़ाइल से तथ्य आधार में डेटा आयात करें।
ग्रीन - प्रोलॉग में तथ्यों के आधार के साथ काम करते हैं।
नोट। तीर डेटा धाराओं को इंगित करता है।
SWI- प्रोलॉग कार्यान्वयन में एक CSV फ़ाइल के साथ काम करने को सरल बनाने वाले विधेय शामिल हैं। मैं कार्यक्रम बनाने के लिए मुख्य बिंदु देता हूं:
1. CSV फ़ाइल से डेटा दर्ज करना
csv_read_file(File, RowList, [ separator(0';)])
फ़ाइल - एक विशेष प्रारूप में फ़ाइल का नाम।
रोलिस्ट - आयात के बाद पंक्तियों की सूची
फ़ंक्शन का इनपुट उस फ़ाइल के नाम को इंगित करता है जिसमें से आयात किया जाएगा, और खेतों के बीच विभाजक को परिभाषित करने वाले पैरामीटर भी सेट करता है। आउटपुट पर हमें फॉर्म की एक सूची मिलती है (रोलिस्ट वैरिएबल):
[row(…, …, …), row(…, …, …), …]
2. फैक्ट फाइल परिभाषा
यह बाद में इसे संदर्भित करने के लिए सुविधाजनक बनाने के लिए है।
file(base1, csv, 'c:/pl/prj1/file.csv'). file(base1, base, 'c:/pl/prj1/file.pl').
3. तथ्य आधार की परिभाषा
:- dynamic(base1/3).
हम तथ्यों को इस आधार से जोड़ेंगे।
4. आधार को शून्य करना
abolish(base1/3).
5. सूची से आधार पीढ़ी
यहां आप डेटा प्रीप्रोसेसिंग भी कर सकते हैं। उदाहरण के लिए, केवल उन फ़ील्ड्स का चयन करें जिनकी आवश्यकता है। अभिकर्मक डेटाबेस में तथ्य जोड़ता है।
perform_cl([]). perform_cl([row(N1, N2, _, N3,_)|T]):- assert(base1(N1,N2,N3)), !, perform_cl(T).
या
forall(member(row(N1,N2,N3),RowList), assert(base1(N1,N2,N3)).
विधेय फोर्ल्ड बहुत शक्तिशाली है। सभी समाधान खोज विकल्प (1 पैरामीटर) के लिए, यह दूसरे पैरामीटर द्वारा इंगित क्रिया करता है।
6. डेटाबेस को बाहरी फ़ाइल में सहेजना
file(base1, base, F), tell(F), forall( base1(N1,N2,N3), (writeq( base1(N1,N2,N3)), write('.'), nl) ), told.
7. एक फ़ाइल से तथ्य डेटाबेस डाउनलोड करना
file(base1, base, F), Consult(F).
या
file(base1, base, F), [F].
कार्यक्रम पूरी तरह से है:
% % :- dynamic(base1/3). % % % CSV file(base1, csv, 'c:/pl/prj1/file1.csv'). % file(base1, base, 'c:/pl/prj1/file1.pl'). % csv % import_base:- % file(base1, csv, File), % c ";" [row(..., ..., ...), ...] csv_read_file(File, RowList, [ separator(0';)]), % abolish(base1/3), % perform_row1(RowList),!. % % % - . perform_row([]). % perform_row([row(N1, N2, _, N3,_)|T]):- % , assert(base1(N1,N2,N3)), !, % perform_row(T). % % perform_row1(RowList):- % : forall(member(row(N1, N2, _, N3,_),RowList), % assert(base1(N1,N2,N3))). % % save_base:- % file(base1, base, F), % , tell(F), % : forall( base1(N1,N2,N3), % (writeq( base1(N1,N2,N3)), write('.'), nl) ), told. % % load_base:- % file(base1, base, File), % consult(File).
स्रोत डेटा
file1.csv फ़ाइल की सामग्री
; 12; /; ;
; 13; /; ;
; 14; /; ;
कार्य प्रोटोकॉल:
4 ?- import_base.
true.
5 ?- forall(base1(N1,N2,N3),writeln(base1(N1,N2,N3))).
base1( , 12, )
base1( , 13, )
base1( , 14, )
true.
6 ?- save_base.
true.
7 ?- abolish(base1/3).
true.
8 ?- forall(base1(N1,N2,N3),writeln(base1(N1,N2,N3))).
ERROR: toplevel: Undefined procedure: base1/3 (DWIM could not correct goal)
9 ?- load_base.
% c:/pl/prj1/file1.pl compiled 0.00 sec, 492 bytes
true.
10 ?- forall(base1(N1,N2,N3),writeln(base1(N1,N2,N3))).
base1( , 12, )
base1( , 13, )
base1( , 14, )
true.
तथ्य डेटाबेस फ़ाइल file1.pl
base1(' ',' 12',' ').
base1(' ',' 13',' ').
base1(' ',' 14',' ').
निष्कर्ष
यह लेख एक कार्यक्रम प्रदान करता है जो एक तथ्य आधार बनाने पर कुछ प्रारंभिक कार्य प्रदर्शित करता है जो प्रस्तावना की वास्तविक शक्ति नहीं दिखाता है। हालांकि, तथ्य डेटाबेस में आयात करने के बाद, सुरुचिपूर्ण डेटा प्रोसेसिंग विधियों को लागू किया जा सकता है। उदाहरण के लिए, पदानुक्रमित संरचनाओं (संगठनात्मक और कर्मचारियों की संरचना) का नियंत्रण और विज़ुअलाइज़ेशन, तालिका में डेटा की बिलिंग, सफाई (परिवर्तन) और अन्य के लिए डेटा की तैयारी।