Пример #1
0
 def exe(self):
     out_format, fold, export_type, printer = self.out_format, self.fold, self.export_type, self.printer
     server = self.get_server()
     dc = server.db_conf
     if dc.server_type is DatabaseType.MONGO:
         printer.print_error_msg("Not Support MongoDB!")
         self.write_error_history("Not Support MongoDB")
         return
     conn = server.get_connection()
     try:
         tab_list = self._exe_query(
             server.get_list_tables_sql(server.db_conf.database), conn)[1]
         split_line, print_template = '\n---\n' if out_format == 'markdown' else '\n', get_print_template(
             out_format)
         attach_sql = export_type == 'ddl'
         for tab in tab_list[0]:
             if export_type in {'all', 'ddl'}:
                 printer.output(
                     print_template.format(f'Table structure for {tab[0]}'))
                 self._print_table_schema(
                     conn,
                     Query(dc.server_type, dc.database, None, tab[0], fold),
                     attach_sql)
                 printer.output(split_line)
             if export_type in {'all', 'data'}:
                 q = Query(dc.server_type, dc.database,
                           server.get_scan_table_sql(tab[0]), tab[0], fold)
                 printer.output(
                     print_template.format(f'Dumping data for {tab[0]}'),
                     end='')
                 if dc.server_type is DatabaseType.SQL_SERVER and out_format == 'sql':
                     headers, results = self._exe_query(
                         f'sp_columns [{tab[0]}];{q.sql}', conn)
                     set_identity_insert = len([
                         1 for row in results[0]
                         if row[5].endswith("identity")
                     ]) > 0
                     if set_identity_insert:
                         printer.output(
                             f'SET IDENTITY_INSERT [{tab[0]}] ON;')
                     self.print_result_set(
                         self._get_table_head_from_description(headers[1]),
                         results[1], q)
                     if set_identity_insert:
                         printer.output(
                             f'SET IDENTITY_INSERT [{tab[0]}] OFF;')
                 else:
                     self._run_sql(q, conn)
                 printer.output(split_line)
     except BaseException as be:
         self.write_error_history(export_type)
         printer.print_error_msg(be)
     finally:
         conn.close()
Пример #2
0
 def exe(self):
     server = self.get_server()
     dc, conn = server.db_conf, server.get_connection()
     self._run_sql(
         Query(dc.server_type, dc.database, self.params['option_val'], None,
               self.fold, self.columns, self.limit_rows, self.human), conn)
     conn.close()
Пример #3
0
 def exe(self):
     path = self.params['option_val']
     success_num, fail_num = 0, 0
     try:
         if os.path.exists(path):
             server = self.get_server()
             dc = server.db_conf
             if dc.server_type is DatabaseType.MONGO:
                 self.printer.print_error_msg("Not Support MongoDB!")
                 self.write_error_history('Not Support MongoDB')
                 return
             conn = server.get_connection()
             cur = conn.cursor()
             with open(path, mode='r', encoding='UTF8') as sql_file:
                 sql = ''
                 for line in sql_file.readlines():
                     t_sql = line.strip()
                     if not t_sql or t_sql.startswith('--'):
                         continue
                     elif t_sql.lower().startswith(('insert', 'create', 'update', 'select', 'delete', 'alter', 'set',
                                                    'drop', 'go', 'use', 'if', 'with', 'show', 'desc', 'grant',
                                                    'exec')):
                         if sql == '':
                             sql = line
                             continue
                         success, fail = self.exe_sql(cur, Query(dc.server_type, None, sql, fold=False))
                         success_num += success
                         fail_num += fail
                         sql = line
                     else:
                         sql += line
                 if sql != '':
                     success, fail = self.exe_sql(cur, Query(dc.server_type, None, sql, fold=False))
                     success_num += success
                     fail_num += fail
             if success_num > 0:
                 conn.commit()
             cur.close()
             conn.close()
             self.printer.print_info_msg(f'end load. {success_num} successfully executed, {fail_num} failed.')
             self.write_ok_history(path)
         else:
             self.printer.print_error_msg(f"path:{path} not exist!")
             self.write_error_history(path)
     except Exception as be:
         self.printer.print_error_msg(be)
         self.write_error_history(path)
Пример #4
0
 def exe(self):
     tab_name, server = self.params['option_val'], self.get_server()
     conn, dc = server.get_connection(), server.db_conf
     self._print_table_schema(
         conn,
         Query(dc.server_type, dc.database, None, tab_name, self.fold,
               self.columns, self.limit_rows, self.human))
     conn.close()
Пример #5
0
 def exe(self):
     server = self.get_server()
     dc = server.db_conf
     show_obj = self.params.get('option_val', 'table')
     show_obj = show_obj.lower() if show_obj.lower() else 'table'
     sql = self.get_sql(server, show_obj)
     if sql is None:
         self.printer.print_error_msg(f'Invalid Param "{show_obj}"!')
         self.write_error_history(show_obj)
         return
     conn = server.get_connection()
     if dc.server_type is DatabaseType.MONGO:
         db = conn[dc.database]
         header, res = eval(sql)
         self.print_result_set(header, res, Query(dc.server_type, dc.database, sql, None, False))
     else:
         self._run_sql(Query(dc.server_type, dc.database, sql, fold=False), conn)
     conn.close()
Пример #6
0
 def exe(self):
     print_content = []
     db_conf = self._read_info()['conf']
     head = ['env', 'conf', 'servertype', 'host', 'port', 'database', 'user', 'password', 'charset', 'autocommit']
     for env in db_conf.keys():
         for conf in db_conf[env].keys():
             new_row = [env, conf]
             new_row.extend([db_conf[env][conf].get(key, '') for key in head[2:]])
             print_content.append(new_row)
     header, res = self.before_print(head, print_content, Query(None, None, None, fold=self.fold))
     pu.print_table(header, res, self.params['print_conf'], self.printer)
     self.write_ok_history('')
Пример #7
0
 def exe(self):
     try:
         res = [
             list(
                 map(lambda cell: cell.replace("\n", " "),
                     hs.split('\0\0'))) for hs in self._read_history()
         ]
         self.print_result_set(['time', 'option', 'value', 'stat'], res,
                               Query(None, None, None, fold=self.fold))
         self.__write_history(self.out_format, Stat.OK)
     except Exception as e:
         self.__write_history(self.out_format, Stat.ERROR)
         self.printer.print_error_msg(e)
Пример #8
0
 def exe(self):
     server = self.get_server()
     dc = server.db_conf
     if dc.server_type is DatabaseType.MONGO:
         self.printer.print_error_msg("Not Support MongoDB!")
         self.write_error_history("Not Support MongoDB")
         return
     conn = server.get_connection()
     val = input('db>').strip()
     while val not in {'quit', '!q', 'exit'}:
         if not (val == '' or val.strip() == ''):
             self._run_sql(Query(dc.server_type, None, val), conn)
         val = input('db>')
     conn.close()
     self.printer.output('Bye')
Пример #9
0
 def exe(self):
     tab_name, server = self.params['option_val'], self.get_server()
     sql = server.get_count_table_sql(tab_name)
     dc, conn = server.db_conf, server.get_connection()
     self._run_sql(Query(dc.server_type, dc.database, sql, tab_name, False), conn)
     conn.close()