项目原因导致出现两个开发环境,主数据库环境因需求变更每天都需要进行脚本的修改,而报表服务器的脚本也需要同步更新,需求变更很少会同步提醒的;人工判断太过于麻烦,我又是一个懒人;只好写个脚本自动进行识别并加以运行了。
这只是一个简单的版本比较工具,事实上变更是很难判断的,例如表中新增了一个字段,导致顺序发生变更,这个时候你很难判断是新增还是修改的;诸如字段类型的修改.因此只能去判断表是否存在,字段是否存在,进而执行判断脚本,产生相应的表脚本和字段教本。
事实上Oracle有个DBMS_METADATA数据包提供了DLL脚本,不过包含了很多存储参数,对版本比较和对象生成没有什么意义。
[@more@]--CREATE THE CREATE_TABLE SCRIPT, THOUGH WE CAN USE --LIKE select dbms_metadata.get_ddl('TABLE','TABLENAME','USERNAME') from dual; GET THE SQL SCRIPT --BUT IT IS NOT HELPFUL TO COMPARE THE DIFFERENT VERSION SELECT SQLTEXT FROM (B.COLUMN_ID) FROM USER_TAB_COLUMNS@REMOTEKGK B WHERE A.TABLE_NAME=B.TABLE_NAME),' ',',') USER_TAB_COLUMNS@REMOTEKGK B WHERE A.TABLE_NAME=B.TABLE_NAME),' ',',') USER_TAB_COLUMNS@REMOTEKGK B WHERE A.TABLE_NAME=B.TABLE_NAME),' ',',') A.TABLE_NAME=B.TABLE_NAME),' ',',') |
--ADD NEW COLUMN ACCORDING THE LATEST TABLE NAME SELECT 'ALTER TABLE '||TABLE_NAME||' ADD "'||COLUMN_NAME||'" '|| |
--BASED THE COLUMN_NAME AND COLUMN_ID,NEED TO MODIFY THE COLUMN NAME --BUT IN FACT MOST SITUATION IT RESULT IN NEW COLUMN,SO IT IS NO USEFUL .... |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8128313/viewspace-982546/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8128313/viewspace-982546/