我可以通过以下方式查询创建特定表的信息:
SHOW CREATE TABLE `table_name`
如果对所有表都执行此操作,则可以通过运行收集的sql查询来重新创建整个数据库。有没有更简单的方法来获取表创建脚本(即sql导出文件),该脚本仅使用
CREATE
语句创建了数据库? 最佳答案
我会用mysqldump解决这个问题。这是MySQL随附的命令行工具。这是文档:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
您在命令提示符下而不是在phpMyAdmin中运行它。您必须有权访问运行MySQL Server的主机,或者至少可以通过网络访问该主机的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;
(我忽略了更多的输出。)
您可以通过这种方式一次转储许多表的结构,还可以转储视图,触发器,过程等。
如果不使用
--no-data
,它还将在转储的每个表中包含数据。这使其成为数据备份的有效工具。默认情况下,它以许多INSERT
语句的形式转储数据。因此,就像在另一个MySQL实例上运行CREATE TABLE语句可以重新创建数据库结构一样,INSERT语句也可以重新创建数据。关于mysql - phpMyAdmin导出数据库创建脚本,无需更改语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46633669/