phpMyAdmin导出数据库创建脚本,不带alter语句

时间:2017-10-08 16:56:23

标签: mysql sql phpmyadmin

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

SHOW CREATE TABLE `table_name`

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

1 个答案:

答案 0 :(得分:0)

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

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

例如:

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;

(我省略了更多输出。)

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

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