Mysql文件对比
使用mysql对文件内容进行差异对比 文件内容按行存储到mysql字段,比diff好用,能快速统计出来差异,出报告。
对比文件差异
-- 安装 MySQL 服务器(在 Ubuntu 22.04 系统中)-- apt install mysql-server -y
-- 进入 MySQL 命令行-- mysql
-- 创建数据库CREATE DATABASE IF NOT EXISTS files;USE files;
-- 创建基表,用于存储旧文件内容CREATE TABLE IF NOT EXISTS f202401 ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(200) NOT NULL DEFAULT ' ', PRIMARY KEY (id));
-- 查看 MySQL 允许加载文件的路径SHOW GLOBAL VARIABLES LIKE '%secure_file_priv%';
-- 注意:需要将文件放到 /var/lib/mysql-files/ 下面-- 从文件中加载数据到基表LOAD DATA INFILE '/var/lib/mysql-files/f202401.txt' INTO TABLE f202401 (name);
-- 创建新表,用于存储新文件内容CREATE TABLE IF NOT EXISTS f20240104 ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(200) NOT NULL DEFAULT ' ', PRIMARY KEY (id));
-- 从文件中加载数据到新表LOAD DATA INFILE '/var/lib/mysql-files/f20240104.txt' INTO TABLE f20240104 (name);
-- 统计分析部分
-- 统计基表中减少的行SELECT t1.*FROM f202401 AS t1LEFT JOIN f20240104 AS t2 ON t1.name = t2.nameWHERE t2.name IS NULL;
-- 统计新表中增加的行SELECT t2.*FROM f20240104 AS t2LEFT JOIN f202401 AS t1 ON t2.name = t1.nameWHERE t1.name IS NULL;
-- 还可以统计基表和新表中相同的行SELECT t1.*FROM f202401 AS t1JOIN f20240104 AS t2 ON t1.name = t2.name;
-- 统计基表中减少的行数SELECT COUNT(*) AS rows_decreasedFROM f202401 AS t1LEFT JOIN f20240104 AS t2 ON t1.name = t2.nameWHERE t2.name IS NULL;
-- 统计新表中增加的行数SELECT COUNT(*) AS rows_increasedFROM f20240104 AS t2LEFT JOIN f202401 AS t1 ON t2.name = t1.nameWHERE t1.name IS NULL;