progs:fblutil
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
progs:fblutil [2020/01/17 08:57] – vytvořeno Karel Petrů | progs:fblutil [2020/01/31 14:23] (aktuální) – Karel Petrů | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== FBLUtil ====== | ====== FBLUtil ====== | ||
- | ===== Klonovani mezi DB ===== | + | ===== Import ceniku z CSV ===== |
<code LUA> | <code LUA> | ||
+ | --../ | ||
+ | |||
+ | local DBName = " | ||
+ | local CenikName=arg[1] | ||
+ | local ImportFN = "/ | ||
+ | local IDDruh=" | ||
+ | local Prefix=string.upper(string.sub(CenikName, | ||
+ | local PrefixNumChars=4 | ||
+ | local ISC_PASSWORD=os.getenv(" | ||
+ | |||
+ | print(" | ||
+ | print(" | ||
+ | print(" | ||
+ | local db = FBLUtil.ConnectDB(DBName, | ||
+ | |||
+ | function CloneTable(db1, | ||
+ | local r=db1: | ||
+ | if #r>0 then --tabulka existuje | ||
+ | print(" | ||
+ | db1: | ||
+ | db1: | ||
+ | end | ||
+ | local t = db1: | ||
+ | local flds = "" | ||
+ | for i, v in ipairs(t) do | ||
+ | local s = string.format(" | ||
+ | if flds ~= "" | ||
+ | flds = flds .. ", " | ||
+ | end | ||
+ | flds = flds .. s | ||
+ | end | ||
+ | print(" | ||
+ | db1: | ||
+ | db1: | ||
+ | local t = db1: | ||
+ | for i, v in ipairs(t) do | ||
+ | db1: | ||
+ | if v.Inactive then | ||
+ | db1: | ||
+ | end | ||
+ | end | ||
+ | db1: | ||
+ | end | ||
+ | |||
+ | function CloneCenik() | ||
+ | CloneTable(db, | ||
+ | end | ||
+ | |||
+ | function GetNextPrefixNum(NumChars) | ||
+ | local r=db: | ||
+ | --print(r) | ||
+ | local p=string.format(" | ||
+ | local n=0 | ||
+ | if # | ||
+ | local f=string.len(Prefix)+1 | ||
+ | local t=string.len(Prefix)+NumChars | ||
+ | n=string.sub(r.Rows[1][1], | ||
+ | --print(p, | ||
+ | end | ||
+ | return string.format(p, | ||
+ | end | ||
+ | |||
+ | local PrefixNum=GetNextPrefixNum(PrefixNumChars) | ||
+ | |||
+ | function Import_testcen() | ||
+ | print(" | ||
+ | local t = os.time() | ||
+ | print(string.format(" | ||
+ | local n = db: | ||
+ | | ||
+ | values (' | ||
+ | db:Commit() | ||
+ | print(string.format(" | ||
+ | end | ||
+ | |||
+ | function UpdateCenik() | ||
+ | print(" | ||
+ | local t = os.time() | ||
+ | local n=db: | ||
+ | naklady=(select naklady from v_rozpocty_cenik v where v.v_iddod=c.v_iddod and c.iddruh=v.iddruh), | ||
+ | DatumZmeny=CURRENT_TIMESTAMP | ||
+ | where | ||
+ | exists (select * from v_rozpocty_cenik v where v.v_iddod=c.v_iddod)]], | ||
+ | db:Commit() | ||
+ | print(string.format(" | ||
+ | t = os.time() | ||
+ | local n=db: | ||
+ | where not exists (select * from rozpocty_cenik c where c.v_iddod=v.v_iddod and c.iddruh=v.iddruh) | ||
+ | ]],{}) | ||
+ | db:Commit() | ||
+ | print(string.format(" | ||
+ | end | ||
+ | |||
+ | function CreateCenik() | ||
+ | print(" | ||
+ | local t = os.time() | ||
+ | db: | ||
+ | local n=db: | ||
+ | db:Commit() | ||
+ | print(string.format(" | ||
+ | end | ||
+ | |||
+ | |||
+ | CloneCenik() | ||
+ | |||
+ | assert(load(" | ||
+ | |||
+ | if tonumber(PrefixNum) == 0 then | ||
+ | CreateCenik() | ||
+ | else | ||
+ | UpdateCenik() | ||
+ | end | ||
+ | |||
+ | db: | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Prenos dat mezi DB, Import, Export ===== | ||
+ | |||
+ | <code LUA> | ||
+ | local Path = " | ||
+ | local DBName1 = " | ||
+ | local DBName2 = " | ||
+ | local Tmp = "/ | ||
+ | local FName0 = " | ||
+ | local FName1 = " | ||
+ | |||
function CloneTable(db1, | function CloneTable(db1, | ||
local t = db1: | local t = db1: | ||
Řádek 39: | Řádek 166: | ||
return n | return n | ||
end | end | ||
+ | |||
+ | print(" | ||
+ | print(" | ||
+ | local db = FBLUtil.ConnectDB(Path..DBName1, | ||
+ | local ok, db2 = pcall(FBLUtil.ConnectDB, | ||
+ | if not ok then | ||
+ | print(" | ||
+ | db2 = FBLUtil.CreateDB(Path..DBName2, | ||
+ | --db2 = FBLUtil.CreateDB(Path..DBName2, | ||
+ | end | ||
+ | |||
+ | function TestTable(TableName) | ||
+ | print(" | ||
+ | local Fields = db: | ||
+ | |||
+ | local flds = "" | ||
+ | local vals = "" | ||
+ | local parms = "" | ||
+ | for i, v in ipairs(Fields) do | ||
+ | if flds ~= "" | ||
+ | flds = flds .. v.Field | ||
+ | if vals ~= "" | ||
+ | vals = vals .. " | ||
+ | if parms ~= "" | ||
+ | parms = parms .. "?" | ||
+ | end | ||
+ | local match = "" | ||
+ | local ix = db: | ||
+ | for i, v in ipairs(ix) do | ||
+ | if v.Opts == " | ||
+ | match = v.Fields | ||
+ | break | ||
+ | end | ||
+ | end | ||
+ | |||
+ | local t = os.time() | ||
+ | --local TableRows = db: | ||
+ | local TableRows = db: | ||
+ | print(string.format(" | ||
+ | |||
+ | local t2idx = {} | ||
+ | for i, v in ipairs(db2: | ||
+ | t2idx[v] = true | ||
+ | end | ||
+ | if t2idx[TableName] then | ||
+ | db2: | ||
+ | db2: | ||
+ | end | ||
local t = os.time() | local t = os.time() | ||
print(" | print(" | ||
- | CloneTable(db1, TableName, db2) | + | CloneTable(db, TableName, db2) |
- | local n = db1: | + | local n = db: |
db2: | db2: | ||
- | CloneIndices(db1, TableName, db2) | + | CloneIndices(db, TableName, db2) |
print(string.format(" | print(string.format(" | ||
local n = ExportAndDiff(db2, | local n = ExportAndDiff(db2, | ||
Řádek 51: | Řádek 226: | ||
db2: | db2: | ||
db2: | db2: | ||
+ | |||
+ | local t = os.time() | ||
+ | print(" | ||
+ | CloneTable(db, | ||
+ | CloneIndices(db, | ||
+ | --local n = db2: | ||
+ | local n = db2: | ||
+ | db2: | ||
+ | --CloneIndices(db, | ||
+ | print(string.format(" | ||
+ | assert(TableRows == n) | ||
+ | local n = ExportAndDiff(db2, | ||
+ | assert(TableRows == n) | ||
+ | db2: | ||
+ | db2: | ||
+ | |||
+ | local t = os.time() | ||
+ | print(" | ||
+ | CloneTable(db, | ||
+ | local Struct = {} | ||
+ | --local n = db: | ||
+ | local n = db: | ||
+ | function(t) | ||
+ | if t.Structure then | ||
+ | for i, v in ipairs(t.Structure) do | ||
+ | local tt = {} | ||
+ | for kk, vv in pairs(v) do | ||
+ | tt[kk] = vv | ||
+ | end | ||
+ | table.insert(Struct, | ||
+ | end | ||
+ | else | ||
+ | --print(t) | ||
+ | --db2: | ||
+ | db2: | ||
+ | --return false --ukoncit | ||
+ | end | ||
+ | end | ||
+ | ) | ||
+ | db2: | ||
+ | CloneIndices(db, | ||
+ | print(string.format(" | ||
+ | assert(TableRows == n) | ||
+ | --print(" | ||
+ | local n = ExportAndDiff(db2, | ||
+ | assert(TableRows == n) | ||
+ | end | ||
+ | |||
+ | --print(db: | ||
+ | |||
+ | local t = db: | ||
+ | if arg and arg[1] then | ||
+ | TestTable(arg[1]) | ||
+ | else | ||
+ | for i, v in ipairs(t) do | ||
+ | TestTable(v) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | db2:Drop() | ||
+ | --db2: | ||
+ | |||
+ | db: | ||
+ | |||
+ | print(" | ||
+ | return 6 | ||
</ | </ |
progs/fblutil.1579251441.txt.gz · Poslední úprava: 2020/01/17 08:57 autor: Karel Petrů