最轻量做法是切出目标表的 CREATE TABLE 和 INSERT INTO 语句:用 sed 提取建表块(/^CREATE TABLE target_table/,/^CREATE TABLE `/),再用 grep 提取对应插入语句;通过管道流式导入,需保持字符集(如 utf8mb4)和 SQL 模式一致,并禁用外键检查以避免报错。用 sed 或 awk 提取单个表的 CREATE TABLE 和 INSERT 语句直接导入全量 sql 文件再删表太重,也容易污染数据库;最轻量的做法是先切出目标表结构和数据。关键是识别出以 create table `xxx` 开头、到下一个 create table 或文件结尾为止的块。常见错误是只匹配 CREATE TABLE 却忽略后续的 INSERT INTO `xxx` ------ 很多导出工具(如 mysqldump --no-create-info)会把建表和插入分开,所以得同时抓两段。用 sed -n '/^CREATE TABLE `target_table`/,/^CREATE TABLE `/p' dump.sql | sed 'd' 提取建表语句(含字段、索引),但注意结尾会多一行下一个表的开头,用 sed 'd' 删掉插入语句单独提取更稳:grep '^INSERT INTO `target_table`' dump.sql > target_inserts.sql,前提是导出时没加 --skip-extended-insert,否则一行多个 INSERT 会漏匹配如果文件用了反引号包裹库名(如 `mydb`.`target_table`),正则里也要带上,不然匹配失败用 mysql 命令跳过其他表,只执行目标部分MySQL 本身不支持"只导入某张表",但可以靠 shell 管道把过滤后的 SQL 流式喂给 mysql,避免写临时文件。性能上几乎无损耗,但要注意字符集和 SQL 模式必须和原导出一致,否则可能报错 ERROR 1064 或插入乱码。确保连接参数带 --default-character-set=utf8mb4,尤其当原 dump 有 emoji 或中文注释时用 mysql -u user -p -D dbname --init-command="SET FOREIGN_KEY_CHECKS=0;" 关掉外键检查,否则带外键的表可能因依赖表不存在而失败别用 source target.sql 在 MySQL 客户端里执行------它不认 shell 管道里的变量或条件逻辑,且报错后难定位行号Python 脚本做精准分块:处理跨行、注释、转义反引号纯 shell 处理不了复杂情况:比如建表语句换行、SQL 注释里出现 `target_table`、字段名里有反引号、或 INSERT 值里含未转义的单引号。 RedClaw 百度推出的手机端万能AI Agent助手
相关推荐
weelinking5 小时前
【产品】12_接入数据库——让数据永久保存稳联技术老娜6 小时前
DeviceNet主站怎么连接西门子PLC,Profinet网关配置手册(那智机器人)这个DBA有点耶6 小时前
云上运维新挑战:当数据库不再“看得见摸得着”程序大视界6 小时前
【Python系列课程】Python正则表达式(下):环视、命名分组与日志实战TickDB6 小时前
美股行情 API 接入避坑:REST 快照、WebSocket 推送、盘前盘后数据的边界枫叶v.7 小时前
Agent 分层存储架构设计:从记忆方法到中间件选型水兵没月7 小时前
逆向实战小记——某ToB商城网站分析学习AskHarries7 小时前
系统提示词、开发者指令和用户输入的优先级程序员小远7 小时前
Python自动化测试框架及工具详解消失在人海中7 小时前
oracle 数据库多表关联查询