如何快速的為現有資料庫建立資料字典?

2021-08-29 15:03:07 字數 2957 閱讀 3585

大部分專案在驗收時都需要向客戶提供乙份詳細的資料字典,而編寫資料字典是一件既耗時又耗力的事情。為了解決這個問題,提高工作效率,本人寫了乙個工具類。該工具類能夠根據現有的資料庫快速的生成對應的資料字典,它可以為我們完成80%的工作量,我們只需要做剩下的20%的工作就可以了。該工具類目前支援oracle、sqlserver資料庫,操作簡單,快捷。

1、以下是部分關鍵**:

public class metadatautil 

private string gettableprimarykeys(string tablename)

rs.close();

return sb.tostring();

}catch(exception ex) }

private boolean containfieldtype(string fieldtype)

/*** 取得表的備註資訊

*/private mapgettablecomments()throws exception

rs.close();

pstm.close();

return colmap; }

/*** 取得表字段的備註資訊

*/private mapgetcolumncomments(string tablename)throws exception

rs.close();

pstm.close();

return colmap; }

public void createtablemetadata(string filename)

file file = new file(filename);

//delete old file

if(file.exists() && file.isfile()) file.delete();

//create sheet

fileoutputstream out = new fileoutputstream(file);

writableworkbook book = workbook.createworkbook(out);

writablesheet sheet = book.createsheet("資料字典",0);

//表備註

maptablemap = gettablecomments();

databasemetadata dbmd = cn.getmetadata();

string types = ;

resultset rs = dbmd.gettables(catalog ,schemapattern, null, types);

int rowindex = 0;

int tablecount = 0;

while(rs.next())else

//表名

sheet.mergecells(0,rowindex,6,rowindex); //合併單元格,6數字要與表頭的cell個數一致

sheet.addcell(new label(0,rowindex,tablename + tablecomment));

rowindex++;

//表頭

sheet.addcell(new label(0,rowindex,"序號"));

sheet.addcell(new label(1,rowindex,"欄位名"));

sheet.addcell(new label(2,rowindex,"字段描述"));

sheet.addcell(new label(3,rowindex,"字段型別"));

sheet.addcell(new label(4,rowindex,"主鍵"));

sheet.addcell(new label(5,rowindex,"可空"));

sheet.addcell(new label(6,rowindex,"備註"));

rowindex++;

//主鍵

string strprimarykeys = gettableprimarykeys(tablename);

statement stm = cn.createstatement();

stm.setmaxrows(1);

resultset rscolumn = stm.executequery("select * from " + tablename);

resultsetmetadata rsmd = rscolumn.getmetadata();

int recordindex = 1;

for(int i=1;i<=rsmd.getcolumncount();i++)

sheet.addcell(new label(3,rowindex,fieldtype));

//是否主鍵

if(strprimarykeys.indexof("," + rsmd.getcolumnname(i) + ",") != -1)else

//是否可空

sheet.addcell(new label(5,rowindex,(rsmd.isnullable(i)==1)?"":"n"));

//備註

sheet.addcell(new label(6,rowindex,""));

rowindex++;

recordindex++;

}rowindex += 2;

rscolumn.close();

stm.close();

}catch(exception e)

}rs.close();

book.write();

book.close();

}catch(exception ex)finallycatch(exception e)

} }public static void main(string args) catch(exception ex) }

}

Django 匯入現有資料庫

inspectdb 工具自省你配置檔案指向的 資料庫 針對每乙個表生成乙個django模型,然後將這些 python 模型的 顯示在系統的標準輸出裡面。配置好資料庫之後,執行如下命令 很強大,可以省去不少功夫,而且這也比較符合我一貫的邏輯,但是資料庫的反向工程總是不會那麼的盡如人意的 1.如果資料表...

用 Django 管理現有資料庫

在多數專案中,總有一些幾乎一成不變的 crud 操作,編寫這些 很無聊,但又是整個系統必不可少的功能之一。我們在上乙個專案中也面臨類似的問題,雖然已經實現了乙個功能相對完整的管理後台,也盡量做到了 復用,但隨著專案規模的增長,需要編寫的樣本 也不斷膨脹,占用了大量開發時間。面對這種局面,我自然想到了...

Android 載入現有資料庫檔案

想把乙個資料庫db檔案放在 res raw 目錄下,安裝應用的時候就直接載入這個db檔案到程式預設資料庫目錄下 data data package name databases db name,這樣就不用每次安裝的時候都用sql語句建立新的資料庫。下面的 就是將 res raw 目錄下的.db資料庫...