本技巧摘自SQL Server雜志的一期。如需了解更多的技巧,請訪問SQL Server的使用技巧中心。
問:我需要將Microsoft Word文檔導入至SQL Server並索引這些文檔,以便在關系查詢中使用這些文檔。怎樣導入和索引文檔呢? 答:SQL Server允許您以多種方式導入Word文檔。讓我們看看幾種最常用的方法。請注意,在將文檔導入至SQL Server之前,您需要創建一個image數據類型列,用於存放數據。然後,您可以使用textcopy.exe命令行工具將image文件讀入數據庫,從而完成文檔的導入操作。如果需要該工具的基本說明文檔,請在命令提示狀態下鍵入textcopy /?。將Word文檔導入SQL Server的另一個方法是使用Microsoft ActiveX Directory Object(ADO)Stream接口編寫導入代碼。您可以在Microsoft產品支持服務(PSS)的通過使用ADO Stream對象訪問和修改SQL Server BLOB數據一文中找到示例代碼。
此外,您也可以將二進制數據移到SQL Server中。有關這一方法的詳細說明,請參閱PSS的使用ADO檢索和更新SQL Server文本域一文。移動二進制數據允許您將數據的一部分存放在數據庫中,這在需要控制數據格式時尤其有用。例如,如果只需要數據中1,000到1,010之間的字節,導入二進制數據的速度遠遠高於使用ADO Stream接口的速度,這是由於SQL Server從磁盤上檢索數據的量大為減少。人們通常使用這一技術來存儲位掩碼,用於表示應用程序的開或關標志位。
SQL Server 2000自帶了說明了如何移動二進制數據的示例代碼。如需查看該代碼,只需在安裝有SQL Server 2000光盤上代碼示例的驅動器上選擇 Program FilesMicrosoft SQL Server80ToolsDevToolsSamplesado路徑。展開該可執行文件,在Visual Basic目錄下查找Samples子目錄。在Employee示例下,注意一下該代碼是如何使用FillDataFIElds()函數的。
如需索引Word文檔,SQL Server 7.0和SQL Server 2000都提供了全文搜索組件。該組件混合使用了多種技術,用以索引大型文本和image列。在執行全文搜索時,您需要指定image列所含的文件類型,以及從二進制數據中析取信息所需的篩選(filter)。有關使用全文索引的詳細信息,請參閱SQL Server在線書籍中的相關主題,並閱讀David Jones 2000年7月發表在SQL Server雜志網站上的名為構建更好的搜索引擎一文。請注意,索引Word文檔並不會自動生成包含文檔中關鍵字的一組關系表。但是,索引文件讓您將這些Word文檔包含在您的搜索中。以下是從數據中析取關鍵字的可行方式:
使用OLE自動處理從文檔中讀取用戶定義的關鍵字。在裝載該文檔時將這些關鍵字保存在關系表中。
使用OLE自動處理打開文檔並將其保存為文本(.txt)格式。為了析取重要的詞語,您可以使用自己的“詞語分析器”遍歷該文本文件。文字分析器查看文檔中的每個詞語,去除一些無用文字,並將每個唯一的詞語與其出現的次數一道存儲起來。
在新的全文索引文檔中搜索特定的關鍵字,並將這些關鍵字輸入到關系表中。
SQL Server 2000提供了多個強大的工具和接口,用於幫助用戶實現二進制Microsoft Office文檔的快速裝載、搜索和檢索。