将命令作为参数输入到另一个应用程序

Entering command as a parameter to another application

本文关键字:另一个 应用程序 输入 参数 命令      更新时间:2023-10-16

我使用的是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中。我需要运行10000个查询,因此在Virtuoso中手动输入10000个查询是一件痛苦的事情。

(这个问题也在Virtuoso支持论坛上提出。(

您可以通过多种方式编写与Virtuoso(由我的雇主OpenLink Software制作(的交互脚本,无论是否涉及iSQL。

根据您正在运行的特定查询以及您计划对结果执行的操作,有些方法可能比其他方法更好,例如将curl与SPARQL查询请求URI一起使用,这些URI包括用于结果输出文件的数据序列化指令(例如,CSV、Turtle、TriG(。这里没有足够的信息来知道该朝哪个方向发展。

StackOverflow通常不是解决特定于产品的非编程问题的最佳场所。Virtuoso特定的问题通常最好向Virtuoso用户邮件列表、公开的OpenLink软件支持论坛或机密的支持案例提出。

isql的手册页非常清晰:

isql可用于向数据源提交SQL,并格式化/输出结果可以在批量或交互模式下使用

和:

-b nbsp 批处理模式。它不会进行任何提示。

这正是你想要的,不是吗?

[myMachine]$ ./isql 1111 -b < mytext.txt

稍微令人困惑的是,有一个将数据管道传输到isql的示例,即使没有-b:

cat MySql|isql WebDB MyID MyPWD-w
MySql中的每一行都必须包含一个sql命令,但最后一行必须为空。


免责声明:我不知道OpenLink Virtuoso是什么或做什么;我只是在为你表演阅读理解