用MySQL反向生成数据表结构和数据 简单快捷的数据迁移和备份方法(mysql反向生成)
数据的迁移和备份都是Web程序开发的常用功能,特别是数据表结构的备份,承担着分配数据量和实现数据恢复的重任。其实MySQL也提供一种简单快捷的数据迁移和备份方法,即反向生成数据表结构和数据。
MySQL反向生成数据表结构和数据是通过show create table table_name;和select * from table_name;两种语句,配合完整的字段类型、索引、触发器信息反向生成的。在C#、Java、PHP等开发语言中,都是如下实现:
mysql> show create table table_name;
CREATE Table `table_name` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default ”,
`age` tinyint(4) NOT NULL default ‘0’,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
mysql> select * from table_name;
+—-+——-+——+
| id | name | age |
+—-+——-+——+
| 1 | ‘qing’ | 18 |
| 2 | ‘hehe’ | 26 |
+—-+——-+——+
上面的SQL语句可以用来反向构建数据表结构和数据,也可以作为数据的备份和迁移,例如:
//反向构建数据表结构和数据
String sqlCreateStr=””;
String sqlDataStr=””;
while (reader.Read())
{
sqlCreateStr=”CREATE Table `table_name` (“;
sqlCreateStr+= “`id` int(11) NOT NULL auto_increment, “;
sqlCreateStr+= “`name` varchar(50) NOT NULL default ”, “;
sqlCreateStr+= “`age` tinyint(4) NOT NULL default ‘0’, “;
sqlCreateStr+= “PRIMARY KEY (`id`)”;
sqlCreateStr+=”) TYPE=MyISAM;”;
sqlDataStr=”Insert into table_name(name, age) value(‘”+reader.GetString(1)+”‘,'”+reader.GetInt32(2)+”‘);\n”;
}
//将数据恢复到新的数据库
con.Open();
SQL Transaction trans=C con.BeginTransaction(); //开始事务
SQLCommand.ExecuteNonQuery(sqlCreateStr); //创建表结构
SQLCommand.ExecuteNonQuery(sqlDataStr); //插入数据
trans.Commit(); //事务提交
con.Close();
以上就是MySQL反向生成数据表结构和数据的实现方法,是一种简单快捷的数据迁移和备份方法,特别适用于数据表大的时候,节省时间和工作量。