gpt4 book ai didi

shell - 我们可以从sqlite3执行操作系统命令吗

转载 作者:IT王子 更新时间:2023-10-29 06:28:48 24 4
gpt4 key购买 nike

我的要求是:在表中添加新条目时运行 shell 脚本。

有什么方法可以添加触发器以在插入新行时运行 shell 脚本?


嗯,情况是:

我正在使用不同程序的数据库。假设程序 X 创建并填充 xyz.db,我只需要在程序 X 向表中插入新行时执行一个小脚本。

目前我的 shell 脚本在循环中无限运行并检查是否有任何新行并处理它,因为插入不是很频繁,连续运行脚本不是一个好的选择。

我的问题类似于can we execute unix command from oracle10g procedure但我需要在 sqlite3 中做同样的事情

最佳答案

首先,我完全同意评论,这听起来像是一个糟糕的架构。如果 shell 脚本操作不独立于与数据库交互的程序,则应通过调用某种系统命令将此调用嵌入到您的代码中、程序使用的驱动程序中或作为主代码的一部分。

在 Java 中可以用 ProcessBuilder 完成类,system(<command>) ruby 中的方法和 os.system(<command>)在 python 中。

在 oracle 中,可以在 java 中编写触发器,您可以使用它来进行系统调用,但是此功能在 sqlite 中不存在。

如果完全有必要,我会建议围绕您的 sqlite 数据库驱动程序编写一个包装器,并在其中进行系统调用。

也许您可以扩展您实际需要做的事情,我们可以提供替代方法

更新:

您可以使用 c/c++ sqlite 接口(interface)在 c/c++ 中创建回调函数(请参阅 http://www.sqlite.org/capi3ref.html 中的数据更改通知回调),您可以在触发器中调用它

CREATE TRIGGER <trigger name>
INSERT ON <table_name>
BEGIN
SELECT callback_function()
END;

然后您可以使用此回调函数来调用您的 shell 脚本,听起来相对复杂,但非常有趣。

关于shell - 我们可以从sqlite3执行操作系统命令吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6088447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com