mysql - 没有 alter 语句的 phpMyAdmin 导出数据库创建脚本

标签 mysql sql phpmyadmin

我可以通过以下方式获取创建特定表的查询:

SHOW CREATE TABLE `table_name`

如果我对所有表都这样做,我可以通过运行收集的 sql 查询来重新创建整个数据库。有没有更简单的方法来获取表创建脚本,即 sql 导出文件,它只使用 CREATE 语句创建数据库?

最佳答案

我会用 mysqldump 解决这个问题。它是 MySQL 自带的命令行工具。这是文档:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

您可以在命令提示符下运行它,而不是在 phpMyAdmin 中。您必须有权访问与运行 MySQL 服务器的主机相同的 shell 环境,或者至少可以通过网络访问该主机。

例如:

mysqldump --no-data mydatabase mytable

产生输出:

--
-- Table structure for table `mytable`
--

DROP TABLE IF EXISTS `mytable`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `c1` int(11) DEFAULT NULL,
  `c2` int(11) DEFAULT NULL,
  `c3` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

(我省略了更多输出。)

您可以通过这种方式一次转储许多表的结构,还可以转储 View 、触发器、过程等。

如果您不使用--no-data,它还会包含您转储的每个表中的数据。这使它成为数据备份的有效工具。默认情况下,它以大量 INSERT 语句的形式转储数据。因此,如果您针对另一个 MySQL 实例运行 CREATE TABLE 语句可以重新创建数据库的结构,INSERT 语句可以重新创建您的数据。

关于mysql - 没有 alter 语句的 phpMyAdmin 导出数据库创建脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46633669/

相关文章:

触发器中的 Mysql 案例不起作用

mysql - 如何通过一个查询删除两个链接表(多对多关系)中的数据?

sql - 使用RegEx在Notepad++中一键执行多个查找/替换命令

iphone - 如何从结果集中获取分组查询数据?

c# - 由于某种原因,这些列从整个数据库添加到 listbox1,尽管只需要从 Students 表中获取

mysql - 如何用连接方式解决这个子查询?

mysql - 使用一个查询选择记录

mysql - 基于 Web 的 MySQL 界面比 phpMyAdmin 更好

mysql - 在 PHPMyAdmin 中设置触发器

java - 为什么这个 SQL 语句会导致错误?