專家解析:在DB2中正確導出LOB數(shù)據(jù)
如現(xiàn)在有一張員工信息的表(USER_INFO)表。在這張表中有三個字段,分別為員工編號、員工姓名、員工身份證復印件等等。由于員工身份證復印件其容量比較大,為此數(shù)據(jù)庫中采用的是LOB數(shù)據(jù)類型。當需要將這張表格中的數(shù)據(jù)導出到特定文件中的時候,只要這些身份證復印件的容量超過32KB的話,則在導出的目標文件中是看不到這些身份證復印件的。在導出的時候,系統(tǒng)會將這些身份證復印件保存在用戶指定的文件夾內(nèi)。而在導出地目標文件中,只有這些復印件對應的名字而已。所以說,如果一個表中有LOB數(shù)據(jù)類型,在導出到特定格式的文件中時,就需要區(qū)別對待。
如果某張表帶有LOB類型的數(shù)據(jù),此時在書寫導出語句的時候,就需要特別的注意。如需要按如下的格式來書寫導出語句:
- Export to user_info.del of del
- Lob to d:\photo1,d:\photo2 Lobfile p1,p2 modifiled by lobsinfile
- Select * from user_info.
一、導出LOB表與普通表相比的一些特殊選項。
跟普通的導出語句相比,在導出帶有LOB數(shù)據(jù)類型的數(shù)據(jù)時,在語句中多了Lob to d:\photo1,d:\photo2 Lobfile p1,p2 modifiled by lobsinfile這么一條語句。其中選項LOB TO定義的是LOB文件要存儲的路徑。在定義這個路徑的時候,用戶可以定義多個目錄。即可以指定一個使用逗號分隔符的目錄列表來定義其文件存儲的位置。如果沒有定義目錄的話,則數(shù)據(jù)庫會采用當前目錄作為這個LOB文件存儲的位置。跟普通的操作系統(tǒng)目錄一樣,不同目錄中的LOB文件名字可以不同。但是同一目錄中的LOB文件名字必須唯一。第二個需要指定的是LOB文件的命名規(guī)則。由于在導出數(shù)據(jù)的時候,會產(chǎn)生很多的LOB文件。而這些數(shù)據(jù)庫自動創(chuàng)建的文件必須要具有文件的名字。此時數(shù)據(jù)庫管理員必須要指定這些LOB文件的命名規(guī)則。這個命名規(guī)則主要是利用可選項LOBFILE來確定。通過這個可選項,數(shù)據(jù)庫管理員可以提高一個使用逗號分隔的基本名稱列表。操作系統(tǒng)就會根據(jù)這些名字來生成LOB文件的名字。需要注意的是,此時數(shù)據(jù)庫管理員提供的只是一個基本的名稱,或者說只是LOB文件名的前綴。系統(tǒng)在生成LOB文件的時候,會自動在這個基本名稱(或者叫做前綴)的后面加上3位數(shù)字的擴展。如上面筆者提供了p1作為LOB文件名的擴展,那么其最后生成的文件名就可能使p1001、p1002等等。可見系統(tǒng)管理員提供一個文件前綴名,系統(tǒng)就會自動擴展出999個可用的LOB文件名。因為操作系統(tǒng)會在LOB文件前綴后面加上3位阿拉伯數(shù)字的擴展名。這個選項跟目錄選項一樣是可選的。如果用戶沒有指定可用的文件基本名稱,則DB2數(shù)據(jù)庫會以db2exp作為基本的文件擴展名。然后在這個名字后面采用3位數(shù)字的擴展名,生成1000個可用的LOB文件的文件名字。
最后需要注意的是,如果在將某個表導出到特定文件的時候,想要分離文件導出LOB的時候,即將LOB文件與其他信息分開存放,還需要在導出語句中加入一個特殊的關鍵字。二、確定可用的文件名。
在將LOB數(shù)據(jù)類型導出的時候,數(shù)據(jù)庫系統(tǒng)會在用戶指定的目錄中創(chuàng)建文件用來保存這些LOB數(shù)據(jù)類型。在數(shù)據(jù)庫中一個LOB數(shù)據(jù)段就需要創(chuàng)建一個文件。也就是說,如果表中有2個字段采用的是LOB數(shù)據(jù)類型,而這個表有2萬條記錄的話,那么在導出的時候就會創(chuàng)建4萬個文件。而一個文件對應一個文件名字,所以數(shù)據(jù)庫管理員必須要保證有4萬個可用的文件名字(注意不是文件基本名字)。如果在導出的時候,LOB數(shù)據(jù)類型太多,現(xiàn)有可用的文件名字不夠使用的話,那么導出作業(yè)就會以失敗告終。
為此在導出數(shù)據(jù)之前,數(shù)據(jù)庫管理員需要評估一下數(shù)據(jù)表中LOB數(shù)據(jù)段的數(shù)量。然后根據(jù)這個數(shù)量來確定到底需要有多少個可用的文件名字。然后根據(jù)這個數(shù)量來確定存儲的目錄與文件基本名稱的數(shù)量。如上面這個例子所示,最終的可用文件名字有多少呢?