[PHP] 导出mysql数据库结构并生成列表的小脚本,供VIM使用
2009-09-07 14:52
423 查看
很多时候,大家都是要 “接过别人手中的枪” ,在已有的代码上进行开发、修改……所以,很多时候,总是对数据的存储结构不是很熟悉,影响工作的效率,浪费大量时间在查阅数据库存储结构上。(当然了,用GUI类数据库工具的可能除外。)
因为我比较依赖VIM + mysql client 的开发环境,所以,写了个PHP小脚本,一下子把所有表的create语句生成到一个文件夹中,并使用列表来管理,这样在vim中可以用gf热键,一下子就跳到那个表的定义,个人认为比较方便。
为什么不把所有的语句都存储到同一个文件中呢,有以下几个原因:
1. 有的表的中文 comment 编码格式不对,可能是乱码,这样可能会影响到下面出现的中文;
2. 如果有列表文件的话,比较好管理,一目了然,个人比较喜欢,呵呵 。
不磨叽了,源码如下:
/**
* 用来生成MySQL数据库文档
* @filename mysql_db_creator.php
* @touch 2009年 09月 07日 星期一 14:33:47 CST
* @author Yufeng Zhang
*/
define('HOST' , '192.168.1.162');
define('PORT' , 3306);
define('USER' , 'zhangyufeng');
define('PASS' , 'zhangyufeng');
define('DB_NAME' , 'beijing');
define('DB_CHARSET' , 'utf8');
//数据表列表文件
define('SAVE_FILE_NAME' , 'ganji_v3_beijing_tables_list');
//详细文档存入路径
define('SAVE_FILE_FOLDER' , 'ganji_v3_beijing');
//定义路径
$path_info = pathinfo(__FILE__);
define('DIR_NAME' , $path_info['dirname']);
if(!is_dir(DIR_NAME . '/' . SAVE_FILE_FOLDER)){
mkdir(DIR_NAME . '/' . SAVE_FILE_FOLDER);
}
$mysql_link = mysql_connect(HOST . ':' . PORT , USER, PASS);
if(!$mysql_link){
die("Counld not connect to Mysql:\n" . mysql_error());
}
mysql_query('use ' . DB_NAME);
mysql_query('set names ' . DB_CHARSET);
$table_resource = mysql_query("SHOW TABLES FROM " . DB_NAME, $mysql_link);
if(!$table_resource){
die("Counld not open DB:\n" . mysql_error());
}
$file_list = "////////////////////////////////////////////\n";
$file_list .= "Welcome To Mysql_soup_list\n";
$file_list .= "////////////////////////////////////////////\n";
$result_soup = '';
while($row = mysql_fetch_row($table_resource)){
$sql = "show create table " . $row[0];
$get_sql = mysql_query($sql , $mysql_link);
$result_soup = '';
if($row_table = mysql_fetch_row($get_sql)){
$result_soup .= "//------------------------------------\n";
$result_soup .= "//------------------------------------\n";
$result_soup .= "// " . $row_table[0] . "\n";
$result_soup .= "// " . $row_table[1] . "\n";
$file_save = SAVE_FILE_FOLDER . '/' . $row_table[0];
}
file_put_contents($file_save, $result_soup);
$file_list .= DIR_NAME . '/' . $file_save . "\n";
}
file_put_contents(SAVE_FILE_NAME , $file_list);
mysql_close($mysql_link);
大家有没有发现: 最后的变量名是result_soup 呵呵 ,是因为我最近在学习 ,大家如果有好的学习资料,请分享一下呀,呵呵 。
因为我比较依赖VIM + mysql client 的开发环境,所以,写了个PHP小脚本,一下子把所有表的create语句生成到一个文件夹中,并使用列表来管理,这样在vim中可以用gf热键,一下子就跳到那个表的定义,个人认为比较方便。
为什么不把所有的语句都存储到同一个文件中呢,有以下几个原因:
1. 有的表的中文 comment 编码格式不对,可能是乱码,这样可能会影响到下面出现的中文;
2. 如果有列表文件的话,比较好管理,一目了然,个人比较喜欢,呵呵 。
不磨叽了,源码如下:
/**
* 用来生成MySQL数据库文档
* @filename mysql_db_creator.php
* @touch 2009年 09月 07日 星期一 14:33:47 CST
* @author Yufeng Zhang
*/
define('HOST' , '192.168.1.162');
define('PORT' , 3306);
define('USER' , 'zhangyufeng');
define('PASS' , 'zhangyufeng');
define('DB_NAME' , 'beijing');
define('DB_CHARSET' , 'utf8');
//数据表列表文件
define('SAVE_FILE_NAME' , 'ganji_v3_beijing_tables_list');
//详细文档存入路径
define('SAVE_FILE_FOLDER' , 'ganji_v3_beijing');
//定义路径
$path_info = pathinfo(__FILE__);
define('DIR_NAME' , $path_info['dirname']);
if(!is_dir(DIR_NAME . '/' . SAVE_FILE_FOLDER)){
mkdir(DIR_NAME . '/' . SAVE_FILE_FOLDER);
}
$mysql_link = mysql_connect(HOST . ':' . PORT , USER, PASS);
if(!$mysql_link){
die("Counld not connect to Mysql:\n" . mysql_error());
}
mysql_query('use ' . DB_NAME);
mysql_query('set names ' . DB_CHARSET);
$table_resource = mysql_query("SHOW TABLES FROM " . DB_NAME, $mysql_link);
if(!$table_resource){
die("Counld not open DB:\n" . mysql_error());
}
$file_list = "////////////////////////////////////////////\n";
$file_list .= "Welcome To Mysql_soup_list\n";
$file_list .= "////////////////////////////////////////////\n";
$result_soup = '';
while($row = mysql_fetch_row($table_resource)){
$sql = "show create table " . $row[0];
$get_sql = mysql_query($sql , $mysql_link);
$result_soup = '';
if($row_table = mysql_fetch_row($get_sql)){
$result_soup .= "//------------------------------------\n";
$result_soup .= "//------------------------------------\n";
$result_soup .= "// " . $row_table[0] . "\n";
$result_soup .= "// " . $row_table[1] . "\n";
$file_save = SAVE_FILE_FOLDER . '/' . $row_table[0];
}
file_put_contents($file_save, $result_soup);
$file_list .= DIR_NAME . '/' . $file_save . "\n";
}
file_put_contents(SAVE_FILE_NAME , $file_list);
mysql_close($mysql_link);
大家有没有发现: 最后的变量名是result_soup 呵呵 ,是因为我最近在学习 ,大家如果有好的学习资料,请分享一下呀,呵呵 。
相关文章推荐
- 导出MySQL数据库结构的PHP脚本
- 使用DOS命令导出Windows系统中文件列表或者文件结构的方法
- 导出MySql数据库字典的PHP脚本
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- 使用脚本编写 Vim 编辑器,第 3 部分: 内置列表
- 利用PHP生成MySQL数据库表结构信息
- php将mysql数据库整库导出生成sql文件
- Windows 7和SUSE 11系统使用命令行导入导出mysql数据库sql脚本
- 使用脚本语言生成芯片寄存器列表的头文件
- Navicat工具导出mySQL数据库某个视图结构的.sql脚本
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- Python脚本---把MySQL数据库表中的数据导出生成csv格式文件
- sqlserver2000下生成表结构脚本和导入导出数据内容
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- 使用脚本编写 Vim 编辑器,第 3 部分: 内置列表
- 使用PHP一键生成MySQL数据库字典
- 使用SQL语句导出数据库表结构定义,便于生成数据库定义文档
- php使用指定字符列表生成随机字符串的方法
- 如何使用Shell脚本编译生成Archive文件并导出签名IPA文件。
- php将mysql数据库整库导出生成sql文件的具体实现