github存储库https://github.com/isaacbrodsky/duckdb-lua
下载
wget http://community-extensions.duckdb.org/v1.4.1/linux_arm64/lua.duckdb_extension.gz
安装和加载
./duckdb141
D install 'lua.duckdb_extension.gz';
D load lua;
输出
-- context示例
D SELECT lua('return "Hello " .. context', 'World');
┌────────────────────────────────────────────┐
│ lua('return "Hello " .. context', 'World') │
│ varchar │
├────────────────────────────────────────────┤
│ Hello World │
└────────────────────────────────────────────┘
-- 将lua程序片段执行,但没有返回值,print函数在屏幕控制台输出执行结果
D SELECT lua('s=0 for i=3,1,-1 do s=s+i end print(s)');
6
┌───────────────────────────────────────────────┐
│ lua('s=0 for i=3,1,-1 do s=s+i end print(s)') │
│ varchar │
├───────────────────────────────────────────────┤
│ nil │
└───────────────────────────────────────────────┘
-- 将lua程序片段执行,有返回值,在SQL查询结果中输出
D SELECT lua('s=0 for i=3,1,-1 do s=s+i end return(s)');
┌────────────────────────────────────────────────┐
│ lua('s=0 for i=3,1,-1 do s=s+i end return(s)') │
│ varchar │
├────────────────────────────────────────────────┤
│ 6 │
└────────────────────────────────────────────────┘
--利用query查询包含lua程序的拼接字符串,出错处理
D from query('select lua(''return "big" ..'',''db'')');
┌─────────────────────────────────────────────────┐
│ lua('return "big" ..', 'db') │
│ varchar │
├─────────────────────────────────────────────────┤
│ [string "line"]:1: unexpected symbol near <eof> │
└─────────────────────────────────────────────────┘
--利用query查询包含lua程序的拼接字符串,lua程序正确执行的结果
D from query('select lua(''return "big" ..context'',''db'')');
┌─────────────────────────────────────┐
│ lua('return "big" ..context', 'db') │
│ varchar │
├─────────────────────────────────────┤
│ bigdb │
└─────────────────────────────────────┘
--利用set variable传入数组参数,求平方积,注意 Lua 索引值是以 1 为起始
D SET VARIABLE list_of_int = [1,2,3];
D SELECT lua('s2=1 s=context for i=1,3,1 do s2=s2*s[i]*s[i] end return(s2)',getvariable('list_of_int'));
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│ lua('s2=1 s=context for i=1,3,1 do s2=s2*s[i]*s[i] end return(s2)', getvariable('list_of_int')) │
│ json │
├─────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 36 │
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
DuckDB中使用Lua插件编程

396

被折叠的 条评论
为什么被折叠?



