脚本
创建脚本
Lua 脚本可用作 SmartESQL 的客户端代码。一个 Lua 脚本通常会包含加载 SmartEDB 模块并初始化运行时的代码、创建/加载并连接数据库,然后执行 SQL 查询并获取结果集。例如:
首先加载 SmartEDB 模块:
require ('exdb')
接下来加载并初始化 SmartEDB 运行时。请注意,此函数调用使用大括号“{}”进行。这是 Lua 语言中将表作为参数传递给函数的语法。例如:
initRuntime{disk=is_disk, debug=is_debug, shm=is_shm, tmgr=tmgr}
然后创建/加载包含设备列表及指定参数的数据库:
devices = {
{
type='conv',
assignment= 'database',
size = 64*1024*1024
}
}
dbparams = {ddl_dict_size=64*1024, max_classes=100, max_indexes=100}
db = create("luadb", devices, dbparams)
并且连接到数据库:
local c = connect(db)
现在该脚本可以执行查询并处理结果集:
c:statement("create table t(i int)")
print ("Inserting value")
c:statement("insert into t values([1,2,3])")
-- querying, cursor is a resut of the query
local curs = c:query("select count(*) from t")
-- traversing result set
local elem = curs:next()
while elem do
for k,v in pairs(elem) do
print(k,v)
end
elem = curs:next()
end
c:close()
close(db)
close(dbname)
-- Explicitly free database memory with LUA GC
devices[1].ptr = nil
示例
Lua SDK 提供了示例“samples/lua/insert”和“samples/lua/open”,这些示例可以从相关的命令文件中运行。例如,在 Windows 系统上,可以从目录 samples/lua/insert 中执行以下命令文件 run.bat:
set LUA_PATH=..\..\..\target\lua\exdb.lua
set PATH=%PATH%;..\..\..\target\bin.so
..\..\..\target\bin\luajit insert.lua