Мне нужна помощь по сценарию LUA, который должен выводить результаты таблицы в читаемом формате.
Этот скрипт просто выводит результаты в виде ссылки на таблицу:
database.open("provider=nis;database=nis;driver=none")
query = database.query("SELECT distinct cmcs.name, ms.schedule_name, mw.start_time, mw.end_time from MAINTENANCE_WINDOW mw INNER JOIN CM_DEVICE cmd on mw.dev_id = cmd.dev_id INNER JOIN CM_COMPUTER_SYSTEM cmcs on cmcs.cs_id = cmd.cs_id INNER JOIN MAINTENANCE_SCHEDULE ms on mw.schedule_id = ms.schedule_id where mw.end_time > GETDATE();")
print (query)
Результат выше:
table:0x7fe8f40e6f00
У меня есть следующий сценарий, но он не выводит то, что я ожидал увидеть:
database.open("provider=nis;database=nis;driver=none")
query = database.query("SELECT distinct cmcs.name, ms.schedule_name, mw.start_time, mw.end_time from MAINTENANCE_WINDOW mw INNER JOIN CM_DEVICE cmd on mw.dev_id = cmd.dev_id INNER JOIN CM_COMPUTER_SYSTEM cmcs on cmcs.cs_id = cmd.cs_id INNER JOIN MAINTENANCE_SCHEDULE ms on mw.schedule_id = ms.schedule_id where mw.end_time > GETDATE();")
if query == nil then
print ("Query did not complete, or had no results")
else
for idx,row in pairs (query) do
printf("Hostname: %s \t IP: %s",row['name'],row['schedule_name'])
end
end
Вот снимок экрана с выходными данными SQL при запуске на самом SQL Server (если есть какие-либо выходные данные):
Какую библиотеку вы используете? Если библиотека возвращает таблицу, вам придется перебрать пары ключ-значение и отформатировать ее в желаемый результат, как в приведенном вами примере. Вы также можете использовать некоторую библиотеку сериализации, такую как serpent, для вывода таблицы, не просматривая ее вручную.
Вы можете скачать библиотеку для печати таблиц. Я использую inspect.lua.






Понятно:
database.open("provider=nis;database=nis;driver=none")
function tdump(t)
local function dmp(t, l, k)
if type(t) == "table" then
print(string.format("%s%s:", string.rep(" ", l*2), tostring(k)))
for k, v in pairs(t) do
dmp(v, l+1, k)
end
else
print(string.format("%s%s:%s", string.rep(" ", l*2), tostring(k), tostring(t)))
end
end
dmp(t, 1, "Maintenance Monitor")
end
--To OUTFILE
query = database.query("SELECT distinct cmcs.name, ms.schedule_name, mw.start_time, mw.end_time from MAINTENANCE_WINDOW mw INNER JOIN CM_DEVICE cmd on mw.dev_id = cmd.dev_id INNER JOIN CM_COMPUTER_SYSTEM cmcs on cmcs.cs_id = cmd.cs_id INNER JOIN MAINTENANCE_SCHEDULE ms on mw.schedule_id = ms.schedule_id where mw.end_time > GETDATE() INTO OUTFILE '/tmp/Maintenance.txt';")
tdump(query)
Надеюсь, это поможет другим!
printfне является функцией lua.