我正在执行sqlite:
sqlite3 -batch -cmd "select col2 from mytable where col1 = 'myvalue';" mydb
我希望它执行select语句并退出,但它会坐在那里并等待进一步输入,需要.exit
命令。
我没有选择执行</dev/null
,因为我是以编程方式执行命令而不是从shell脚本执行命令。
如果不使用shell重定向或管道,sqlite3如何在单行命令中退出?
答案 0 :(得分:1)
SQLite3监视器实用程序将第一个不以-
开头的参数视为要打开的数据库的名称。之后的任何其他参数都不是开关或开关参数,它们被视为要执行的命令,就好像它们是从STDIN输入的一样。至少有一个这样的命令的存在禁止从STDIN完全解析。这就是-cmd
存在的原因:它让你在开始时执行命令然后仍然进入STDIN REPL。因此,您可以修改命令行:
sqlite3 -batch mydb "select col2 from mytable where col1 = 'myvalue'"
就像通过C API编译预准备语句一样,在查询结束时不需要分号。每个命令行参数都被视为完整语句或sqlite3
点命令。