не могу переключить вид на глюон мобайл

  SELECT DISTINCT SCHEMA_NAME AS `database`
    FROM information_schema.SCHEMATA
   WHERE  SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql')
   ORDER BY SCHEMA_NAME

предоставляет вам список всех баз данных, отличных от MYSQL, в вашей системе.

  SELECT TABLE_SCHEMA AS `database`,
         TABLE_NAME AS `table`
    FROM information_schema.TABLES
   WHERE TABLE_TYPE = 'BASE TABLE'
   ORDER BY TABLE_SCHEMA, TABLE_NAME

предоставляет вам список всех фактических таблиц (за исключением SYSTEM VIEWs, таких как таблица TABLES , и пользовательские представления) во всех базах данных.

Затем вы должны реализовать логику в своей программе, чтобы гарантировать, что для каждой базы данных это действительно база данных Magento, прежде чем вы обрезаете определенные таблицы. В противном случае вы можете стать презираемым человеком среди своих сотрудников. : -)

Редактировать

Вот хранимая процедура.

Вам нужно отредактировать его, чтобы сделать именно то, что вам нужно для этого; в частности, он подсчитывает строки, а не усекает таблицы, и не содержит правильный список журнальных таблиц. (Было бы безответственно для меня опубликовать такую ​​дико разрушительную хранимую процедуру, вы должны отредактировать ее сами, чтобы сделать деструктивную часть.)

DELIMITER $$
DROP PROCEDURE IF EXISTS `zap_magento_logs`$$

CREATE PROCEDURE `zap_magento_logs`()
BEGIN

    -- declare variables for database and table names
    DECLARE dbname VARCHAR(128) DEFAULT '';
    DECLARE tbname VARCHAR(128) DEFAULT '';

    DECLARE done INTEGER DEFAULT 0;

    -- declare cursor for list of log tables
    DECLARE log_table_list CURSOR FOR 
      SELECT TABLE_SCHEMA AS `database`,
             TABLE_NAME AS `table`
        FROM `information_schema`.TABLES
       WHERE TABLE_TYPE = 'BASE TABLE'
         AND TABLE_NAME IN 
         (
            'log_customer',
        'log_visitor',
        'log_visitor_info',
        'log_url',
        'log_url_info',
        'log_quote'
         )
       ORDER BY TABLE_SCHEMA, TABLE_NAME;

    -- declare NOT FOUND handler
        DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET done = 1;

    OPEN log_table_list;

    log_table: LOOP

        FETCH log_table_list INTO dbname, tbname;

        IF done = 1 THEN
        LEAVE log_table;
        END IF;

        -- create an appropriate text string for a DDL or other SQL statement
        SET @s = CONCAT('SELECT COUNT(*) AS num FROM  ',dbname,'.',tbname);
        PREPARE stmt FROM @s;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt; 
    END LOOP    log_table;
    CLOSE log_table_list;

END$$

DELIMITER ;

Вы запустили это, выпустив команду SQL

  CALL zap_magento_logs();
0
задан reicher_bene 16 January 2019 в 20:49
поделиться