MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / InputSql

Method InputSql

class/databaseModel/sqlserverModel.py:236–278  ·  view source on GitHub ↗
(self, get)

Source from the content-addressed store, hash-verified

234
235 # 导入
236 def InputSql(self, get):
237
238 name = get.name
239 file = get.file
240
241 find = public.M('databases').where("name=? AND LOWER(type)=LOWER('SQLServer')", (name,)).find()
242 if not find: return public.returnMsg(False, '数据库不存在!')
243
244 tmp = file.split('.')
245 exts = ['sql', 'zip', 'bak']
246 ext = tmp[len(tmp) - 1]
247 if ext not in exts:
248 return public.returnMsg(False, 'DATABASE_INPUT_ERR_FORMAT')
249
250 backupPath = session['config']['backup_path'] + '/database'
251
252 if ext == 'zip':
253 try:
254 fname = os.path.basename(file).replace('.zip', '')
255 dst_path = backupPath + '/' + fname
256 if not os.path.exists(dst_path): os.makedirs(dst_path)
257
258 public.unzip(file, dst_path)
259 for x in os.listdir(dst_path):
260 if x.find('bak') >= 0 or x.find('sql') >= 0:
261 file = dst_path + '/' + x
262 break
263 except:
264 return public.returnMsg(False, '导入失败,该文件不是有效的zip格式的文件。')
265
266 mssql_obj = self.get_mssql_obj_by_sid(find['sid'])
267 data = mssql_obj.query("use %s ;select filename from sysfiles" % find['name'])
268
269 isError = self.IsSqlError(data)
270 if isError != None: return isError
271 if type(data) == str: return public.returnMsg(False, data)
272
273 mssql_obj.execute("ALTER DATABASE %s SET OFFLINE WITH ROLLBACK IMMEDIATE" % (find['name']))
274 mssql_obj.execute("use master;restore database %s from disk='%s' with replace, MOVE N'%s' TO N'%s',MOVE N'%s_Log' TO N'%s' " % (find['name'], file, find['name'], data[0][0], find['name'], data[1][0]))
275 mssql_obj.execute("ALTER DATABASE %s SET ONLINE" % (find['name']))
276
277 public.WriteLog("TYPE_DATABASE", '导入数据库[{}]成功'.format(name))
278 return public.returnMsg(True, 'DATABASE_INPUT_SUCCESS')
279
280 # 同步数据库到服务器
281 def SyncToDatabases(self, get):

Callers

nothing calls this directly

Calls 14

get_mssql_obj_by_sidMethod · 0.95
returnMsgMethod · 0.80
basenameMethod · 0.80
listdirMethod · 0.80
findMethod · 0.45
whereMethod · 0.45
MMethod · 0.45
splitMethod · 0.45
replaceMethod · 0.45
existsMethod · 0.45
queryMethod · 0.45
IsSqlErrorMethod · 0.45

Tested by

no test coverage detected