function getExportDbSql(db, index)-- 获取导出一个数据库实例的sql语句
local sql = string.format('mysqldump -u%s -p%s -h%s -P%d --default-character-set=utf8 --databases mu_ins_s%s > %s.s%d.mu_ins_%d.sql', db.user, db.pwd, db.host, db.port, index, db.server, index, index)
return sql
end
function createDbBackupFile(fname, dbList)-- 生成数据库导出的语句保存到文件
if not fname or not dbList then
return false
end
local f = io.open(fname, 'w')
if f then
f:write('echo @off\n\n')
for _, db in ipairs(dbList) do
for k, index in ipairs(db.indexList) do
f:write(string.format('REM %s.s%d\n', db.server, index))
f:write(string.format('%s\n\n', getExportDbSql(db, index)))
end
f:write('\n')
end
f:close()
return true
end
return false
end
function initDb(user, pwd, host, port, server_name, indexList)-- 生成db字典对象并返回
local db = {user=user, pwd=pwd, host=host, port=port, server=server_name, indexList=indexList}
return db
end
function displayDb(db)
print('user = ' .. db.user)
print('pwd = ' .. db.pwd)
print('host = ' .. db.host)
print('port = ' .. db.port)
print('server = ' .. db.server)
local s = ''
for k, index in ipairs(db.indexList) do
if k == 1 then
s = index
else
s = s .. ", " .. index
end
end
print("s = " .. s)
print('\n')
end
function displayList(dbList)
for _, db in ipairs(dbList) do
displayDb(db)
end
end
function test()
local db1 = initDb('root', '123456', '127.0.0.1', 3306, 'th1', {10000, 1, 3})
local db2 = initDb('root', '123456', '127.0.0.1', 3306, 'th2', {10000, 1})
local dbList = {db1, db2}
displayList(dbList)
createDbBackupFile('export0.bat', dbList)
end
test()