对每个数据库运行查询 (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) 的相关文章

  • 在 Laravel 5.2 中按 id 显示图像文件

    我有一个名为 files 的表 它保存与属性表相关的图像的名称 我试图使这些图像显示为以下关系 这是属性表的一部分 这是表文件及其与属性表的关系 我可以在控制器 PropertyController 的 show 方法中传递什么参数 目前我
  • Zend Mysql 获取 ENUM 值

    I use Zend Framework在我的应用程序中 我想知道如何从 ENUM 字段中获取值MySQL table 例如 我有permissions field ENUM 删除管理员 edit admin 如何以最佳方式获取数组 删除管
  • 将 Wamp 服务器升级到 MySQL 8.0.15

    因此 我最近在几个月前安装了 WampServer 并预装了 mySQL 5 7 但我想利用 mySQL 8 附带的 NoSQL 功能 为了更新它 我下载了最新的MySQL版本 将文件夹解压到wamp64的bin目录中 然后 我从 5 7
  • 在php中循环多维数组并执行mysql插入(股票数据)

    我有一个多维数组 我希望循环遍历它并为数组中的值执行 mysql 数据库插入 我需要插入到 sql 查询中的数组值是 candles 0 complete candles 0 volume candles 0 mid h candles 0
  • 如何限制 SQLite / MySQL 中的列值

    我想限制表中的列值 例如 列值只能是car or bike or van 我的问题是如何在 SQL 中实现这一点 在数据库端执行此操作是一个好主意还是应该让应用程序限制输入 我还打算在将来添加或删除更多值 例如 truck 我使用的数据库类
  • 如何在MySQL查询结果中显示序号

    我有一些简单的查询 SELECT foo bar FROM table 我想你现在的结果是什么样的 我想要做的是根据查询结果中出现的数据数量来显示一些序列号 就像AUTO INCREMENT 这并不意味着我想出示身份证 我想要的结果是这样的
  • mysql - 如果日期不与现有日期重叠,则将日期范围插入日期列

    我有以下表结构 表名 available id autoincremetn acc id start date end date 1 175 2015 05 26 2015 05 31 2 175 2015 07 01 2015 07 07
  • 我是否应该标准化我的数据库?

    在设计数据库 例如 MySQL 的模式时 会出现是否完全规范化表的问题 一方面 连接 以及外键约束等 非常慢 另一方面 您会获得冗余数据和潜在的不一致 最后优化 是正确的方法吗 即创建一个按书本规范化的数据库 然后查看可以对哪些内容进行非规
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • 我不小心锁定了 MySQL 的 root

    我在 OS X 上使用 MySQL 并使用删除了所有 root 用户DROP USER 然后我又添加了其中一些并做了GRANT ALL on to root localhost 然后在验证确实是的之后注销 我可以登录并执行一些特权操作 不幸
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • MySql 完全联接(联合)和多个日期列的排序

    一个相当复杂的 sql 查询 我可能使它变得更加困难 我有两张桌子 消息 newsid 日期时间 新闻文本 图片 图片ID 日期时间 imgPath 两者没有关系 我只是在新闻 图片创建的日期之前加入 到目前为止的 SQL SELECT F
  • 如何使用Conda安装MySQLdb?

    我已经阅读了有关如何安装 MySQLdb 的几种不同的解释 但我不确定哪种情况适用于我 因为我的错误消息不同 我的系统似乎找不到 MySQLdb 我安装了 pymysql 但我需要导入 MySQLdb 才能使用该库中的过程 感谢您的帮助 c
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • 如何将 MySql 表导出/转储到文本文件中,包括字段名称(也称为标题或列名称)

    在 MySql 的解释器中 很容易将表及其字段名称转储到屏幕上 似乎没有简单的方法可以将表导出到制表符分隔或 CSV 输出文件包括它的列标题 我尝试仅使用 SQL 或 Linux 命令行来完成此操作 而不用其他语言编写程序 谢谢 将查询通过
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 如何将另一列的整数值添加到日期列?

    我试图将整数添加到日期 但出现以下错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 6 行的 wp OrderDate INTERVAL WPProduct Duration DAY AS
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • 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 日志地址信息 日志引用 报