将查询结果写入序言中的文件
Write queries results into a file in prolog
这是我的序言数据库代码。
:-
dynamic myTable/2.
init :-
removeAll,
asserta(myTable('avalue', 'another value')),
asserta(myTable('avalue1', 'another value 1')),
asserta(myTable('avalue2', 'another value 2')),
asserta(myTable('avalue3', 'another value 3')),
asserta(myTable('avalue4', 'another value 4')).
read(Col1, Col2) :-
myTable(Col1, Col2).
saveQueries(FileName) :-
tell(FileName).
stopSavingQueries :-
told.
我想开始将序言输出保存到文件中。对动态数据库进行一些查询,应该保存到文件中,然后停止保存查询。它看起来像这样
?- init.
true.
?- saveQueries('queries.txt').
true.
?- read(Col1, Col2).
...
?- stopSavingQueries.
true.
当我 运行 创建此代码文件时 queries.txt
。当我 运行 read(Col1, Col2).
我在控制台看到输出并且文件 queries.txt
仍然是空的。
谷歌搜索一段时间后,我找到了这个解决方案。
saveQueries(FileName) :-
protocol(FileName).
stopQueriesSaving :-
noprotocol.
那我就可以了
?- saveQueries('queries.txt').
true.
/* execute some queries here */
?- stopQueriesSaving.
true.
执行这些命令后,我有一个文件 queries.txt
,其中包含所有查询及其结果。
这是我的序言数据库代码。
:-
dynamic myTable/2.
init :-
removeAll,
asserta(myTable('avalue', 'another value')),
asserta(myTable('avalue1', 'another value 1')),
asserta(myTable('avalue2', 'another value 2')),
asserta(myTable('avalue3', 'another value 3')),
asserta(myTable('avalue4', 'another value 4')).
read(Col1, Col2) :-
myTable(Col1, Col2).
saveQueries(FileName) :-
tell(FileName).
stopSavingQueries :-
told.
我想开始将序言输出保存到文件中。对动态数据库进行一些查询,应该保存到文件中,然后停止保存查询。它看起来像这样
?- init.
true.
?- saveQueries('queries.txt').
true.
?- read(Col1, Col2).
...
?- stopSavingQueries.
true.
当我 运行 创建此代码文件时 queries.txt
。当我 运行 read(Col1, Col2).
我在控制台看到输出并且文件 queries.txt
仍然是空的。
谷歌搜索一段时间后,我找到了这个解决方案。
saveQueries(FileName) :-
protocol(FileName).
stopQueriesSaving :-
noprotocol.
那我就可以了
?- saveQueries('queries.txt').
true.
/* execute some queries here */
?- stopQueriesSaving.
true.
执行这些命令后,我有一个文件 queries.txt
,其中包含所有查询及其结果。