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

时间:2015-07-05 14:54:00

标签: c++ linux

我正在使用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个查询是一件痛苦的事。

Question also asked on Virtuoso support forum。)

2 个答案:

答案 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 forumsa confidential Support Casehttps://jsfiddle.net/eoopvgmc/1/