PRint(os.date())--dofile("C:/Program Files (x86)/Lua/lua_script/sql_str.lua") local ss = "tblTreasureInfo"local file = "I:/PlanJ_SS/SS_Server/dbcsv/ssdbGame/" .. ss ..".csv"local sql_del = "delete from "..sslocal result_ = "QA已导好表,执行文件 " .. ss .." 成功!!!!"local Zi_duan = {}local sql_Str = nil function getTpl0(tname) -- 获取表各个字段 local t = {} table.insert(t, Zi_duan) for k, v in ipairs(t) do if k == 1 then return t[k] --返回一个table end endend--以上的功能,可以打印第一条数据的字段function LoadCSV(filePath) -- Load File local file = assert(io.open(filePath, 'r')) local content = file:read("*all") file:close() -- Read Word One By One local c = content -- content local p = 0 -- content check pos local w = "" -- content check word local w_next = "" -- content check word(next one) local x = 1 -- content table x local y = 1 -- content table y local opt = {} -- output table opt[y] = {} opt[y][x] = "" local in_quote = false -- quote mode while true do p = p + 1 w = string.sub(c,p ,p ) w_next = string.sub(c,p+1,p+1) if w == ',' then if in_quote then opt[y][x] = opt[y][x]..w else x = x + 1 opt[y][x] = "" end elseif w == '"' then if in_quote then if w_next == '"' then opt[y][x] = opt[y][x]..w p = p + 1 else in_quote = false end else in_quote = true end elseif w == '/n' then if in_quote then opt[y][x] = opt[y][x]..w else y = y + 1 x = 1 opt[y] = {} opt[y][x] = "" end elseif w == "" or w == nil then opt[y][x] = nil break else opt[y][x] = opt[y][x]..w end end -- Return Table return optend local csvData = LoadCSV(file) for k,v in pairs(csvData) do --local result = table.concat(v) --print(result) if k == 1 then for k2,v2 in pairs(v) do if k == 1 then --print(k.."===="..k2.."---》"..v2) table.insert(Zi_duan, v2) end end table.remove(csvData, 1) break; else end end --[[ for k,v in pairs(csvData) do for k2,v2 in pairs(v) do table.insert(t_tt[k], v2) end end --]]function createInsertSql(tname, tpl) --插入一个文件名和一个table local tpl0 = getTpl0(tname) -- 获取表各个字段 local ret = {} -- 插入记录sql table.insert(ret, string.format("insert into `%s`(", tname)) for k, v in pairs(tpl0) do if k > 1 then table.insert(ret, ",") end table.insert(ret, "`") table.insert(ret, v) table.insert(ret, "`") end table.insert(ret, ") values ") local result = table.concat(ret) -- 最终的sql语句 --insert into `tpl_pack`(`packId`,`itemId`,``group``,`num`,`rate`,`rateType`) values print(result) for k, v in pairs(tpl) do --解析一个table if k <= (#tpl-1) then if k > 1 then table.insert(ret, ",") end table.insert(ret, "(") for k2, v2 in pairs(v) do if k2 > 1 then table.insert(ret, ",") end if v2 == "nil_1" then table.insert(ret, "'") table.insert(ret, "'") elseif type(v2) == "string" then table.insert(ret, string.format("'%s'", v2)) else table.insert(ret, "'") table.insert(ret, v2) table.insert(ret, "'") end end table.insert(ret, ")") end end table.insert(ret, ";") local result = table.concat(ret) -- 最终的sql语句 sql_Str = result print(result) --print(result_) --print()endcreateInsertSql(ss, csvData) --这里写上路径和文件名--执行数据库require"luasql.MySQL" --创建环境对象 env=luasql.mysql() --连接数据库 --conn=env:connect("wuxinchang","root","root","127.0.0.1",3306) --设置数据库的编码格式 conn=env:connect("ssdbGame","derek","derek123","192.168.3.236",3306) --设置数据库的编码格式 --conn:execute"SET NAMES UTF8" --执行数据库操作conn:execute"SET NAMES GB2312" --执行数据库操作 status,errorString = conn:execute(sql_del) status,errorString = conn:execute(sql_Str) if errorString == nil then print(result_) return 1; else print(status,errorString ) end conn:close()--关闭数据库连接 env:close()--关闭数据库环境 --dofile("C:/Program Files (x86)/Lua/lua_script/sql_str.lua")
新闻热点
疑难解答