やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3にシェル実行する仮想テーブルモジュールが欲しい

 シェル実行をSQLで行う仮想テーブルモジュールがあったらいいな。

要望

 これはただの要望であり妄想。このように実装できるかどうかもわからない。

 ドットコマンド.shellならあるのだが、結果を表にセットしたい。

構文

select shell(コマンド);

 たとえば以下。

select shell('ls');

結果

 スカラー値、行値、表値のいずれかを返す。

select shell(`ls -1`, col_delimiter='\t');
select shell(`ls -1`, row_delimiter='\n');
select shell(`ps`, row_delimiter='\n', col_delimiter='\t');

 たとえば以下のように設定されると、それぞれの形式で返す。デフォルトはスカラー値。

- row_del col_del
スカラー '' ''
行値 '\n' ''
表値 '\n' '\t'

 表値にすると1行目を列名として取り込む。

 シェルは出力先がファイルである。もしファイルディスクリプタなら列として返す。

create table shell_result(
  runed_at  text current_timestamp,
  cmd       text,
  stdin     text,
  stdout    text,
  stderr    text,
  fd3       text,
  fd4       text,
  ...
);

対象環境