# php_replace_mysql **Repository Path**: web/php_replace_mysql ## Basic Information - **Project Name**: php_replace_mysql - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-14 - **Last Updated**: 2025-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 批量替换SQL生成工具 这是一个用PHP 5.6编写的批量替换SQL生成工具,支持大文件处理,能够根据SQL文件结构自动生成替换SQL语句。 ## 功能特点 - ✅ **PHP 5.6兼容** - 支持旧版本PHP环境 - ✅ **大文件处理** - 流式读取,避免内存溢出 - ✅ **智能解析** - 自动识别文本类型字段 - ✅ **安全备份** - 自动备份同名文件 - ✅ **详细日志** - 处理过程可视化 - ✅ **灵活参数** - 支持自定义输入输出文件 ## 文件结构 ``` php_replace_mysql/ ├── app.sql # 原始SQL文件(示例) ├── sql.txt # 替换SQL语法参考 ├── generate_replace_sql.php # 主程序 ├── README.md # 使用说明 └── replace_output.sql # 生成的替换SQL(运行后生成) ``` ## 使用方法 ### 基本用法 ```bash # 使用默认参数 php generate_replace_sql.php "原字符串" "新字符串" # 示例:将域名 jixiangjie88.cn 替换为 example.com php generate_replace_sql.php "jixiangjie88.cn" "example.com" ``` ### 完整用法 ```bash # 指定输入输出文件 php generate_replace_sql.php "原字符串" "新字符串" 输入文件.sql 输出文件.sql # 示例 php generate_replace_sql.php "旧域名" "新域名" app.sql my_replace.sql ``` ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | 原字符串 | 需要被替换的字符串 | 必填 | | 新字符串 | 替换后的字符串 | 必填 | | 输入文件 | SQL文件路径 | app.sql | | 输出文件 | 生成的替换SQL文件路径 | replace_output.sql | ## 替换SQL语法 根据 `sql.txt` 中的语法,生成的SQL格式如下: ```sql UPDATE `table_name` SET `field_name` = REPLACE(`field_name`,'from_str','to_str') WHERE `field_name` LIKE '%from_str%'; ``` ## 支持的数据类型 工具会自动识别以下文本类型字段: - `varchar` - `char` - `text` - `enum` - `set` - `tinytext` - `mediumtext` - `longtext` ## 处理流程 1. **解析SQL结构** - 读取SQL文件,提取表和字段信息 2. **过滤文本字段** - 只处理文本类型字段,避免影响数值和时间字段 3. **生成替换SQL** - 按照语法模板生成替换语句 4. **安全保存** - 备份原文件后写入新文件 ## 大文件处理 对于大于100MB的SQL文件,程序会: - 显示警告信息 - 使用流式读取,避免内存溢出 - 分步处理,确保稳定性 ## 安全提示 ⚠️ **重要注意事项**: 1. **备份数据库** - 在执行替换SQL前务必备份数据库 2. **测试验证** - 先在测试环境验证替换效果 3. **分批执行** - 对于大表建议分批执行替换语句 4. **检查规则** - 确认替换规则是否正确,避免误操作 ## 示例输出 运行示例命令后,会生成类似以下内容的SQL文件: ```sql -- 批量替换SQL语句生成工具 -- 生成时间:2024-01-15 10:30:00 -- 替换规则:'jixiangjie88.cn' => 'example.com' -- 总计处理表数:156 -- 处理表:hanchao_admin UPDATE `hanchao_admin` SET `logo` = REPLACE(`logo`,'jixiangjie88.cn','example.com') WHERE `logo` LIKE '%jixiangjie88.cn%'; UPDATE `hanchao_admin` SET `name` = REPLACE(`name`,'jixiangjie88.cn','example.com') WHERE `name` LIKE '%jixiangjie88.cn%'; ... ``` ## 故障排除 ### 常见问题 1. **内存不足** - 脚本使用流式读取,不会一次性加载整个文件 - 如果仍遇到内存问题,请检查PHP内存限制设置 2. **文件权限** - 确保脚本有读取输入文件的权限 - 确保有写入输出目录的权限 3. **SQL语法错误** - 检查SQL文件格式是否正确 - 脚本只处理标准的CREATE TABLE语句 4. **PHP版本** - 脚本需要PHP 5.6或更高版本 - 检查命令:`php -v` ### 调试模式 如需调试,可以修改脚本开头的设置: ```php error_reporting(E_ALL); ini_set('display_errors', 1); ``` ## 许可证 本工具为开源软件,可自由使用和修改。