2009-10-20 59 views
0

我想通過首先找到未引用的對象來清理數據庫。我已將所有數據庫對象提取到列表中,並將所有ddl代碼提取到文件中,我也擁有項目的所有Java源代碼。如何在Perl中爲一堆文件建立索引?

基本上我想做的事(最好在Perl中,因爲它是我最熟悉的腳本語言)是以某種方式索引所有提取的數據庫ddl和Java文件的內容(以加速搜索),逐步瀏覽數據庫對象列表,然後搜索所有文件(使用索引)以查看這些對象是否在任何地方被引用並創建報告。

如果您可以指向正確的方向找到某種方式來索引所有這些文件,我可以搜索它們(最好在Perl中),我將不勝感激。 這裏的關鍵是能夠以編程方式執行此操作,而不是手動操作(使用Google桌面搜索等)。

+4

你如何決定一個對象未​​被引用?輸入數據是什麼樣的?你的問題的具體信息太少。現在,*索引文件並搜索它們*是一個完全可以接受的答案。 – 2009-10-20 18:29:43

+0

如果沒有帶名稱的文本出現在源文件中的任何位置(該特定對象的數據庫源文件除外),則該對象將被重新引用。 – Roqetman 2009-10-20 20:21:23

+0

這是一個複雜的任務,因爲它比HTML文檔和關鍵詞更加艱難,因爲它與代碼相關。如果評論中的某些內容不再適用,您可能會得到誤報。根據對象名稱的規則,您可以匹配不適用的數據字符串。我認爲你需要開始考慮限制個案,開始。 – Axeman 2009-10-20 20:25:44

回答

2

將任務分解爲其步驟並從頭開始。首先,記錄是什麼樣子的,它裏面有什麼信息將它連接到另一個記錄?解析該記錄,存儲其唯一標識符以及它引用的事物的列表。

一旦你有了這個列表,就將其反轉。對於每個參考,創建一個引用的對象列表。通過他們的標識符來計數你應該能夠得到那些數量爲零的人。

這是一個非常普遍的答案,但您提出了一個非常普遍的問題。如果您遇到了麻煩,請將其分解爲其中一個步驟,然後提出更具體的問題,提供樣本數據以及您迄今爲止嘗試使用的代碼。

祝你好運,

0

你可能會使用到你想要的東西更有趣的模塊是KinoSearch,它提供給你,你說要尋找的類型的索引。然後你可以通過對象標識符並檢查是否有對它的引用。

相關問題