对每个数据库运行查询 (mysql)

2023-11-22

我正在寻找一种直接的方法来对我的 mysql 服务器上托管的所有数据库运行查询。

我有一堆 Magento 安装,我想截断所有数据库上的所有 Magento 日志表:

  • 日志客户
  • 访客日志
  • 日志访客信息
  • log_url
  • 日志地址信息
  • 日志引用
  • 报告查看的产品索引
  • 报告比较产品索引
  • 报告事件
  • 目录比较项

我认为这在 mysql 中很容易完成,但我找不到直接的答案/解决方案。

*UPDATE *
根据 @Ollie Jones 的说法,如果没有存储过程或服务器端语言( PHP 或其他语言),就不可能做到这一点

UPDATE 1
我选择遵循 PHP 方法 (@samitha) 有两个原因:

  1. STORE PROCEDURE 看起来更复杂
  2. 对“information_schema”表的查询非常慢(至少如果您有很多数据库/表)

  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

为您提供所有实际表的列表(不包括系统视图,例如TABLES表和用户定义的视图)在所有数据库中。

然后,您应该在程序中实现逻辑,以确保在截断某些表之前,对于每个数据库,它确实是 Magento 数据库。否则,你可能会成为同事中被鄙视的人。 :-)

Edit

这是一个存储过程。

您需要编辑它以准确地执行您需要它执行的操作;特别是,它计算行而不是截断表,并且它不包含正确的日志表列表。 (发布如此具有破坏性的存储过程对我来说是不负责任的;您应该自己编辑它来完成破坏性的部分。)

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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对每个数据库运行查询 (mysql) 的相关文章

  • 帮助子查询!返回多于 1 行

    我不明白返回多行的问题 这是我的桌子 BBC name region area population gdp Afghanistan South Asia 652225 26000000 Albania Europe 28728 32000
  • 通过执行本机操作系统的命令(例如curl)通过MySQL调用HTTP GET请求

    我使用的是在 32 位 Microsoft Windows XP 专业版 2002 Service Pack 3 上运行的 MySQL 5 6 11 我安装了MySQLsys exec https github com mysqludf l
  • php 排序比 mysql“order by”更好吗?

    我想知道 就性能而言 并考虑在具有非常非常多 gt 1 000 000 记录的表上进行mysql选择 使用sql order by 对结果进行排序或在查询后使用经典编程排序对结果进行排序是否更好算法 有人有什么建议吗 Tanks mySQL
  • 带有条件的多个表的 mySQL Left Join

    我有个问题 我有4张桌子 Invoice Payment 发票 客户和日历 基本上 我有下面的查询 它运行良好 除了没有 date due 的月份不会返回 即仅返回包含 date due 的月份 注意 日历表仅列出一年中的每一天 它包含一个
  • 为什么这个 Hibernate MySQL 连接是只读的?

    我有一个在 MySQL 数据库上使用 Spring 和 Hibernate 的应用程序 由于某种原因 截至过去几天 每当我尝试将任何对象保留到数据库中时 都会收到以下错误 java sql SQLException 连接是只读的 导致数据修
  • 错误:1449,“指定为定义者的用户 ('root'@'localhost') 不存在”

    当我尝试通过应用程序检索数据或将数据插入数据库时 出现上述错误 过程代码如下 CREATE DEFINER root localhost PROCEDURE sp createUser IN p name VARCHAR 20 IN p u
  • 获取正确的 JSON 格式

    所以我试图创建一个 JSON 对象 它应该为我保存一些有关某些问题的信息 这是我希望如何呈现它的伪代码 page 1 info id 1 type 3 description How to do JSON alternatives id 1
  • MySQL 和 Snow Leopard 反复出现问题 - 无法锁定 ./ibdata1,错误:35

    我不太了解服务器维护 正在尝试通过管理自己的 Mac 来学习 我正在使用 MySQL 数据库 5 5 9 运行本地 Rails 应用程序 很长一段时间以来一切都很好 直到我尝试开始一个新的 Rails 项目 当时 我运行了bundle in
  • Update 查询中的 MySQL 子查询 select 语句

    我有 2 个表 tbl taxclasses tbl taxclasses regions 这是一对多关系 其中主记录 ID 是classid 我在第一个表中有一个名为regionscount 因此 我在表 1 中创建一个税类 然后在表 2
  • 在 Python 中捕获 MySQL 警告

    我想用 Python 捕获并记录 MySQL 警告 例如 如果您提交 MySQL 会向标准错误发出警告 DROP DATABASE IF EXISTS database of armaments 当不存在这样的数据库时 我想捕获并记录它 但
  • SQL:获取每组中的第N项

    我有一个这样的用户表 user id community id registration date 1 1 2008 01 01 2 1 2008 05 01 3 2 2008 01 28 4 2 2008 07 22 5 3 2008 0
  • 如何连接mysql表

    我有一张这样的旧桌子 user gt id name address comments 现在我必须创建一个 别名 表 以允许某些用户出于某种原因拥有别名 我创建了一个新表 user alias 如下所示 user alias gt name
  • Java长到MySQL

    Java相当于什么long在 MySQL 的上下文中数据类型 SIGNED BIGINT http dev mysql com doc refman 5 0 en numeric types html是一个 8 字节长的整数 就像 Java
  • System TZ 和 DB TZ 之间的时区感知差异?

    我目前正在将数据库从本地 MySQL 主机迁移到 RDS 中的 Aurora 使用以下命令检查两个系统上的时区设置 SELECT system time zone global time zone session time zone NOW
  • MYSQL通过两个键内连接两个表

    我正在执行查询以返回存储在 sb carts 表中的所有用户购物车 存储在 sb carts 中的产品信息通过两个键 Product sku 和 school id 引用 它需要参考两者来返回具有独特库存水平等的独特产品 当我执行以下查询时
  • 插入前检查数据库中是否存在行

    DBH new PDO dsn username password opt DBH gt setAttribute PDO ATTR ERRMODE PDO ERRMODE EXCEPTION DBH gt setAttribute PDO
  • 在codeigniter中处理存储过程输出参数

    我在 mysql 中有一个带有输出参数的存储过程 我需要将结果发送到使用 codeigniter 的 php 寄存器模式 public function registerUser data sql call register new use
  • MySQL-创建索引需要多长时间?

    谁能告诉我如何在 MySQL 中添加键扩展 我的数据库有 500 000 000 行 trans 列有 i INT UNSIGNED j INT UNSIGNED nu DOUBLE A DOUBLE 我尝试为一列建立索引 例如 ALTER
  • 添加 2 个不同表的总和

    我有这样的东西 2张桌子 视频 会员 在成员表中 我有每个成员的姓名 1 Tom 2 Bob 3 Zack 4 Dan 5 Casey 在视频表中 我有一列名为 成员 的列 其中的名称用逗号分隔 1 Tom Dan 2 Casey Zack
  • 无法从 Windows GUI 工具连接到远程 Linux 服务器上的 MySql 数据库

    我已经在 Amazon EC2 上的 Linux 服务器上设置了 mysql 数据库 这在本地效果很好 我可以登录 linux 盒子并管理 mysql 数据库 我正在尝试将本地 GUI 客户端连接到远程 mysql 但连接失败 我更新了 e

随机推荐

  • WPF Treeview 数据绑定混合类型的分层数据

    我的 WPF Treeview 绑定情况有点复杂 我在过去的两天里尝试用谷歌搜索它 并且this这是我想出的关闭方式 但这并不能解决问题 情况如下 我有一个看起来像这样的对象 public class Category public str
  • 窗口函数 LAG 可以引用正在计算值的列吗?

    我需要根据当前记录的其他一些列和前一条记录的 X 值 使用某些分区和顺序 计算某些列 X 的值 基本上我需要以形式实现查询 SELECT
  • 将 Spring Boot 集成到 EAR 项目中

    我有一个使用 Spring Boot 创建的现有战争项目 如何将其打包到具有 EJB 模块的 EAR 中 有没有办法将模型和 dao 包移动到 EJB 模块并用 WAR 模块注入它 您需要一个父项目 其中包括一个 war 项目 这将是您的
  • 循环遍历 LINQ 查询列(而不是行)

    是否可以循环 LINQ 查询的结果 如果可以 如何循环 像这样的东西 var results from a in dt AsEnumerable where a Field
  • 如何判断字符串是否是base64

    我有很多来自不同来源的电子邮件 它们都有附件 其中很多附件名称都是中文的 所以这些 名称由电子邮件客户端转换为 Base64 当我收到这些电子邮件时 我希望解码该名称 但还有其他名称 不是base64 如何使用以下命令区分字符串是否为 ba
  • 如何在标题标签中放置滚动文本?

    我想让标题文本可滚动 我使下面的代码滚动良好 但我输入的文本显示时没有空格 这意味着不考虑字符串中的空格
  • 如何将 URL 作为路径参数传递给 FastAPI 路由?

    我使用 FastAPI 创建了一个简单的 API 并且尝试将 URL 作为任意地址传递到 FastAPI 路由path范围 from fastapi import FastAPI app FastAPI app post path def
  • 如何保存应用了 CSS 滤镜的图像

    我想知道如何将 CSS 过滤器应用于图像 然后将图像保存到磁盘 例如 我有一个图像标签 我可以通过 CSS 应用棕褐色效果 img sepia filter sepia 20 并将该类应用于 HTML 中的图像标签 img src img
  • “for”开头的分号如何工作?

    我刚刚在 Mozilla 网站上看到了这段代码 虽然对我来说它看起来很糟糕 但我可能不熟悉它的用法 for k lt len k if k in t t k searchElement return k 循环开头的分号如何工作 完整的代码是
  • 如何在 JPA 中从 @EmbeddedId 设置反向引用

    有人知道是否可以在 JPA 内建立反向引用 EmbeddedId 例如 有一个形式的实体 Entity public class Entity1 Id GeneratedValue private String identifier pri
  • Rails active_storage:安装不起作用

    我已将 Rails api 应用程序从 5 1 更新到 5 2 我只使用rails api 我正在尝试使用活动存储 我认为问题出在线路上config api only true in config application rb 我做了很多谷
  • Numpy:对于一个数组中的每个元素,找到另一个数组中的索引

    我有两个一维数组 x 和 y 一个比另一个小 我试图找到 y 在 x 中的每个元素的索引 我发现了两种简单的方法来做到这一点 第一个很慢 第二个需要大量内存 缓慢的方式 indices for iy in y indices np wher
  • 使Jackson在序列化时不输出类名(使用Spring MVC)

    有没有办法强制 Jackson 不要将类名放在 Json 输出中 我问了一个question这导致了这个问题 但我希望问的是一个更有针对性的问题 我在执行此操作时使用 Spring MVC 但我不确定这有多重要 所以 而不是 NamedSy
  • Android TabHost 内 Fragment

    我正在开发一个 Android 应用程序 并且使用了 android FragmentPager 选项卡example来自developer android com 此示例使用片段作为选项卡内容 现在我想在其中一个片段中放置一个tabHos
  • MySQL 中标志的 BIT(1) 或 TINYINT

    我经常有一些表需要存储一个标志 该标志可以是 1 或 0 真或假等 我以前用过 TINYINT 我应该使用 BIT 1 吗 为什么或者为什么不 如果您使用的 mysql 版本高于 5 0 3Bit不再是别名Tinyint但如果你创建一个bi
  • 如何从视图中获取托管活动?

    我有一个Activity with 3 EditText和一个自定义视图 它充当专用键盘以将信息添加到EditTexts 目前我正在通过Activity进入视图 以便我可以获得当前聚焦的编辑文本并从自定义键盘更新内容 有没有办法引用父活动并
  • preg_match 多个单词

    我想测试一个字符串以查看它包含某些单词 i e string The rain in spain is certain as the dry on the plain is over and it is not clear preg mat
  • 将Cocos2D添加到xCode 4中的项目中

    我正在从事一个项目 需要具有相同的原生部分 cocoa touch 和 cocos2d 中的某些部分 我已经把所有的原生都做了 现在我需要在项目中集成cocos2d 我的问题是我无法成功地将 cocos2d 库添加到我的项目中 有什么好的解
  • java.net.SocketException:套接字失败:EPERM(不允许操作)

    我正在开发一个包含多项活动的 Android Studio 项目 我目前正在尝试读取本地主机上 Java Servlet 的输出 但由于套接字权限 它似乎崩溃了 我创建了一个新项目 使用完全相同的代码并且工作完美 所以我不明白为什么不愿意为
  • 对每个数据库运行查询 (mysql)

    我正在寻找一种直接的方法来对我的 mysql 服务器上托管的所有数据库运行查询 我有一堆 Magento 安装 我想截断所有数据库上的所有 Magento 日志表 日志客户 访客日志 日志访客信息 log url 日志地址信息 日志引用 报