用 mysqldump --no-data 导出表结构生成 CREATE TABLE 语句,不包含 INSERT;导入时用 mysql 命令直接执行 SQL 文件,需注意库名一致性、字符集及外键约束设置。

只导出表结构,用 mysqldump --no-data;导入时直接执行 SQL 文件即可,无需额外参数。
只导出表结构,别带数据
导出结构最常用也最安全的方式是加 --no-data 参数。它会生成建表语句(CREATE TABLE),但跳过所有 INSERT 语句。
-
mysqldump -u root -p --no-data mydb users > users_schema.sql:导出users表结构到文件 - 如果目标库已存在同名表,导入前需手动
DROP TABLE或确认是否允许覆盖 - 注意:默认不导出外键约束,如需保留,确保源库开启了
FOREIGN_KEY_CHECKS=1,且导出时未禁用--skip-extended-insert等干扰项
导入结构时,mysql 命令行就够了
结构文件本质就是可执行的 SQL,用 mysql 命令直接喂给目标库即可,不需要 source 或额外工具。
mysql -u root -p target_db :把结构导入到 <code>target_db- 目标库必须提前存在,否则报错
Unknown database - 若文件含
CREATE DATABASE语句(比如用了--databases),则需去掉该行,或改用mysql -u root -p 全局执行
中文字段名或注释乱码?检查字符集
导出结构后打开发现字段注释变成问号或乱码,大概率是客户端字符集没对齐。
- 加
--default-character-set=utf8mb4显式指定编码:mysqldump -u root -p --no-data --default-character-set=utf8mb4 mydb users > users_schema.sql - 导入时也要保证连接字符集一致,可在命令前加
mysql --default-character-set=utf8mb4 -u root -p target_db - Windows 下 cmd 默认是 GBK,即使加了 utf8mb4 参数也可能失败,建议改用 PowerShell 或 WSL
想批量导出多个表结构?直接列出来
mysqldump 支持一次导出多张表的结构,比写循环脚本更轻量。
mysqldump -u root -p --no-data mydb table_a table_b table_c > schema_multi.sql- 不支持通配符(如
table_*),必须明确写出每个表名 - 如果表太多,建议先查出表名再拼接:
mysql -u root -p -Nse "SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='mydb'" mydb,再代入命令
真正容易被忽略的是:导出的结构文件里默认包含 USE `mydb` 和 SET NAMES 这类上下文语句,如果目标库名不同,要么手动删掉,要么用 --skip-triggers --skip-routines --skip-events 减少干扰项,避免意外切换数据库或触发非预期行为。


















