
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 "..ss
local 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
end
end
--以上的功能,可以打印第一条数据的字段
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 opt
end
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()
end
createInsertSql(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")