рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛: рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рддрдереНрдпреЛрдВ рдХрд╛ рдЖрдзрд╛рд░

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',' ').

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╣ рд▓реЗрдЦ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рддрдереНрдп рдЖрдзрд╛рд░ рдмрдирд╛рдиреЗ рдкрд░ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рдХреНрддрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрдереНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ (рд╕рдВрдЧрдардирд╛рддреНрдордХ рдФрд░ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛) рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдмрд┐рд▓рд┐рдВрдЧ, рд╕рдлрд╛рдИ (рдкрд░рд┐рд╡рд░реНрддрди) рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реАред

Source: https://habr.com/ru/post/In112137/


All Articles