我正在使用Virtuoso engine。要在Virtuoso引擎中输入查询,需要执行以下操作:
virtuoso引擎启动并提供命令提示符:
[myMachine]$ ./isql 1111
Connected to OpenLink Virtuoso
Driver: 07.20.3213 OpenLink Virtuoso ODBC Driver
OpenLink Interactive SQL (Virtuoso), version 0.9849b.
Type HELP; for help and EXIT; to exit.
SQL>
用户输入的查询"sparql select ?a?b?c where{graph ?g{?a ?b ?c} };"
如下:
[myMachine]$ ./isql 1111
Connected to OpenLink Virtuoso
Driver: 07.20.3213 OpenLink Virtuoso ODBC Driver
OpenLink Interactive SQL (Virtuoso), version 0.9849b.
Type HELP; for help and EXIT; to exit.
SQL> sparql select ?a?b?c where{graph ?g{?a ?b ?c} };
现在为了自动化将查询插入Virtuoso的过程,我将用户输入的值"sparql select ?a?b?c where{graph ?g{?a ?b ?c} };"
写入文本文件(mytext.txt
)并使用以下命令:
[myMachine]$ ./isql 1111 < mytext.txt
然而,Virtuoso提示仍显示如下 - 要求我输入查询字符串:
[myMachine]$ ./isql 1111 < mytext.txt
Connected to OpenLink Virtuoso
Driver: 07.20.3213 OpenLink Virtuoso ODBC Driver
OpenLink Interactive SQL (Virtuoso), version 0.9849b.
Type HELP; for help and EXIT; to exit.
SQL>
在linux或c ++中是否有某种方式:通过使用shell脚本(对于linux)或对c ++的系统调用,我可以将我的查询字符串输入到Virtuoso中。我需要运行10,000个查询,因此在Virtuoso中手动输入10,000个查询是一件痛苦的事。
答案 0 :(得分:1)
The manpage for isql
非常明确:
isql可用于将SQL提交到数据源并格式化/输出结果。 可以批量或交互模式使用。
和
-b 批处理模式。它不会做任何提示。
这正是你想要的,不是吗?
[myMachine]$ ./isql 1111 -b < mytext.txt
有一点令人困惑的是,即使没有isql
,也有一个将数据传输到-b
的示例:
cat My.sql | isql WebDB MyID MyPWD -w
My.sql中的每一行必须包含正好1个SQL命令,但最后一行必须为空。
免责声明: 我不知道OpenLink Virtuoso是做什么或做什么的;我只是为你练习阅读理解。
答案 1 :(得分:1)
您可以通过多种方式编写与Virtuoso(由我的雇主OpenLink Software制作)的互动脚本,两者都涉及iSQL而不是Virtuoso Users mailing list。
根据您正在运行的特定查询以及您计划对结果执行的操作,某些方法可能比其他方法更好 - 例如将curl
与包含数据的SPARQL查询请求URI一起使用生成的输出文件的序列化指令(例如,CSV,Turtle,TriG)。这里没有足够的信息来了解追求的方向。
StackOverflow通常不是产品特定的非编程问题的最佳位置。 Virtuoso特定问题通常最好提升到public OpenLink Software Support forums,a confidential Support Case或https://jsfiddle.net/eoopvgmc/1/。