最轻量做法是切出目标表的 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助手
相关推荐
晒太羊的猫43 分钟前
jvm面试题全栈练习生1 小时前
AI Agent 沙箱hz567892 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型广州浮点FLOATLIC2 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题程序员Sunday2 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来半杯咖啡半行码2 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略SEO_juper2 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗小米里的大麦2 小时前
16 MySQL 事务西柚小萌新2 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)用户8356290780513 小时前
使用 Python 对 Excel 工作表进行排序