导出 MySQL 表结构可以使用 mysqldump
、SHOW CREATE TABLE
语句或 information_schema
查询等方式,具体方法如下:
方法 1:使用 mysqldump
导出表结构(推荐)
mysqldump
可以导出整个数据库或单个表的 表结构(不包含数据)。
导出单个表的结构
mysqldump -u root -p --no-data db_name table_name > table_schema.sql
导出整个数据库的表结构
mysqldump -u root -p --no-data db_name > database_schema.sql
参数解析:
-u root
:MySQL 用户名-p
:提示输入密码--no-data
:只导出表结构,不导出数据db_name
:数据库名table_name
:表名> output.sql
:将结果保存到 SQL 文件
示例:
mysqldump -u root -p --no-data mydb > mydb_schema.sql
方法 2:使用 SHOW CREATE TABLE
语句
如果只想查看某个表的 SQL 结构,可以使用:
SHOW CREATE TABLE table_name;
示例
SHOW CREATE TABLE users\G;
结果示例:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
保存到文件
mysql -u root -p -e "SHOW CREATE TABLE mydb.mytable;" > mytable_schema.sql
方法 3:查询 information_schema
如果要查看数据库中所有表的结构,可以查询 information_schema.columns
:
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM information_schema.columns
WHERE table_schema = 'mydb';
如果要导出:
mysql -u root -p -e "SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.columns WHERE table_schema = 'mydb';" > table_structure.txt
方法 4:Navicat / DataGrip 等工具
- 在 Navicat 中,右键点击 表 > 导出 SQL 文件 > 选择 仅结构
- 在 DataGrip 中,选中数据库 > 右键 Dump with structure only
/*
Navicat Premium Data Transfer
Source Server : mysql-master
Source Server Type : MySQL
Source Server Version : 50651
Source Host : 192.168.80.141:3306
Source Schema : visualization
Target Server Type : MySQL
Target Server Version : 50651
File Encoding : 65001
Date: 31/03/2025 23:08:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for City
-- ----------------------------
DROP TABLE IF EXISTS `City`;
CREATE TABLE `City` (
`CityID` int(11) NOT NULL,
`ProvinceID` int(11) NULL DEFAULT NULL,
`NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`CityID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for Province
-- ----------------------------
DROP TABLE IF EXISTS `Province`;
CREATE TABLE `Province` (
`ProvinceID` int(11) NOT NULL,
`NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`ProvinceID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for account
-- ----------------------------
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`money` double NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for position_info_v2
-- ----------------------------
DROP TABLE IF EXISTS `position_info_v2`;
CREATE TABLE `position_info_v2` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`company_id` int(11) NULL DEFAULT NULL COMMENT '公司id',
`company_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公司code',
`company_jc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公司简称',
`position_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位名称',
`position_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位ID',
`position_city` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位城市',
`position_salary` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位薪资',
`work_year` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工作年限',
`edu` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学历',
`position_type_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位分类名称',
`position_type_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位分类code',
`position_boss` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位发布人',
`position_boss_position` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位发布人职位',
`position_update_date` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位更新日期',
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '插入日期',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2706793 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for position_type_info_v2
-- ----------------------------
DROP TABLE IF EXISTS `position_type_info_v2`;
CREATE TABLE `position_type_info_v2` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`position_type_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位分类名称',
`position_type_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '职位分类code',
`position_num` int(11) NULL DEFAULT NULL COMMENT '职位分类中职位数量',
`company_id` int(11) NULL DEFAULT NULL COMMENT '公司id',
`company_jc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公司简称',
`company_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '',
`status` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '抓取状态',
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '插入日期',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1001818 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`cardno` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`其他_1` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`其他_2` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`其他` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`其他_4` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`其他_5` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
`PASSWORD` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮件',
`phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电话',
`create_time` datetime(0) NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `email`(`email`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
总结
方法 | 特点 | 适用场景 |
---|---|---|
mysqldump --no-data | 批量导出整个数据库表结构 | 备份表结构 |
SHOW CREATE TABLE | 仅查看单个表结构 | 临时查看某个表的建表 SQL |
information_schema | 查询表字段信息 | 统计数据库表结构 |
GUI 工具 | 可视化导出 | 不想用命令行时 |
🚀 推荐 使用 mysqldump
进行批量导出!