成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2數(shù)據(jù)導(dǎo)入的四點(diǎn)注意事項(xiàng)

數(shù)據(jù)庫
DB2數(shù)據(jù)導(dǎo)入是我們經(jīng)常要用到的操作,DB2數(shù)據(jù)庫中只有大量的基礎(chǔ)數(shù)據(jù),建立在數(shù)據(jù)庫上的應(yīng)用軟件才能夠發(fā)揮效益。

DB2數(shù)據(jù)導(dǎo)入操作相信的大家都一定了解,在進(jìn)行導(dǎo)入過程中還是需要有一些問題值得我們注意,下面就為您介紹DB2數(shù)據(jù)導(dǎo)入的四點(diǎn)注意事項(xiàng),供您參考。

在將數(shù)據(jù)庫投入生產(chǎn)使用之前,數(shù)據(jù)庫管理員往往需要先往數(shù)據(jù)庫中導(dǎo)入大量的數(shù)據(jù)。數(shù)據(jù)庫中只有大量的基礎(chǔ)數(shù)據(jù),建立在數(shù)據(jù)庫上的應(yīng)用軟件才能夠發(fā)揮效益。

一、默認(rèn)值與空值的爭奪戰(zhàn)。

在數(shù)據(jù)庫表設(shè)計(jì)的時(shí)候,為了數(shù)據(jù)的完整性,往往會(huì)對(duì)某些列設(shè)置一些默認(rèn)值。特別是某個(gè)字段不允許為空時(shí),要設(shè)置默認(rèn)值。當(dāng)用戶沒有輸入對(duì)應(yīng)的值的時(shí)候,就利用默認(rèn)值來填充。如有一張銷售訂單的表。這個(gè)表上有一個(gè)字段是“訂單日期”。當(dāng)用戶沒有輸入數(shù)據(jù)的時(shí)候,這個(gè)訂單日期就默認(rèn)為當(dāng)前系統(tǒng)的日期,從而達(dá)到簡化用戶輸入的目的。現(xiàn)在的問題是,在起初DB2數(shù)據(jù)導(dǎo)入的時(shí)候,如果目標(biāo)文件中沒有這個(gè)列對(duì)應(yīng)的值,而這個(gè)字段設(shè)置了默認(rèn)值,此時(shí)會(huì)有什么后果呢? (DB2數(shù)據(jù)庫與SQLServer數(shù)據(jù)庫的異同)

通常情況下,只要字段沒有非空的約束條件(即允許存在空值),則無論這個(gè)字段有沒有設(shè)置默認(rèn)值,在導(dǎo)入的時(shí)候,只要目標(biāo)文件沒有對(duì)應(yīng)的內(nèi)容,都一律都會(huì)使用NULL值來替代目標(biāo)文件中缺失的列。如果這個(gè)字段有非空的約束(即不允許存在空值),則數(shù)據(jù)庫系統(tǒng)會(huì)提示不允許空值的錯(cuò)誤信息。也就是說,表中的字段默認(rèn)值的設(shè)置一般情況下在導(dǎo)入的過程中是無效的。當(dāng)目標(biāo)文件中不存在某個(gè)值的時(shí)候,數(shù)據(jù)庫不會(huì)以列的默認(rèn)值來填充,而是一律使用NULL值來填充。

但是,如果數(shù)據(jù)庫管理員一定要讓默認(rèn)值來填充這些這些列,是否可以呢?在DB2數(shù)據(jù)庫中,這是可以的。只要目的表已經(jīng)定義了默認(rèn)值,那么就可以在導(dǎo)入的語句中使用USEDEFAUITS選項(xiàng),就可以讓數(shù)據(jù)庫系統(tǒng)(Oracle數(shù)據(jù)庫系統(tǒng)使用經(jīng)驗(yàn)六則)在導(dǎo)入的過車觀念中利用默認(rèn)值來填充目標(biāo)文件中不存在的數(shù)據(jù)。注意這里只有目標(biāo)文件中對(duì)應(yīng)記錄的字段值不存在的時(shí)候,才會(huì)使用默認(rèn)值。如果存在的話,則仍然采用目標(biāo)文件中的值。可見這個(gè)NULL值與列默認(rèn)值之間的戰(zhàn)爭,***的結(jié)果還是在用戶手中。用戶可以通過USEDEFAULT選項(xiàng)來確定到底是否需要默認(rèn)值。如果某個(gè)字段設(shè)置為了非空,而且這個(gè)列又設(shè)置了默認(rèn)值的話,那么筆者建議采用默認(rèn)值,這可以在很大程度上簡化DB2數(shù)據(jù)導(dǎo)入的工作。

二、導(dǎo)入過程中的性能考慮。

當(dāng)將大量的數(shù)據(jù)插入到數(shù)據(jù)庫表中的時(shí)候,會(huì)消耗比較多的數(shù)據(jù)庫資源,從而影響到數(shù)據(jù)庫的性能。為此在將數(shù)據(jù)導(dǎo)入導(dǎo)數(shù)據(jù)庫的時(shí)候,除了需要選擇一個(gè)用戶訪問量少的時(shí)間。還需要在導(dǎo)入的時(shí)候采用合適的手段來提高數(shù)據(jù)導(dǎo)入的性能。如在DB2數(shù)據(jù)庫中,DB2數(shù)據(jù)導(dǎo)入的工具主要分類兩類,分別為裝入使用工具和導(dǎo)入工具。當(dāng)導(dǎo)入的數(shù)據(jù)量比較多,而且用戶對(duì)于性能又有比較嚴(yán)格要求的話,那么筆者建立采用裝入使用工具。因?yàn)橥ǔG闆r下,在導(dǎo)入大量數(shù)據(jù)的時(shí)候,裝入使用工具能夠提供比較高的性能。

當(dāng)在客戶端上導(dǎo)入數(shù)據(jù),而不是直接在服務(wù)器上導(dǎo)入數(shù)據(jù)的時(shí)候,加入一個(gè)compound子句也可以改善數(shù)據(jù)庫的性能。這個(gè)子句主要是用來對(duì)需要插入的數(shù)據(jù)進(jìn)行分組,即以多少條記錄為單位,向服務(wù)器傳送插入請(qǐng)求。由于數(shù)據(jù)需要在客戶端與服務(wù)器之間進(jìn)行傳遞。客戶端從外部文件中讀取數(shù)據(jù)傳遞到數(shù)據(jù)庫服務(wù)器上需要有一段時(shí)間;而數(shù)據(jù)庫服務(wù)器在接受到客戶端的請(qǐng)求將數(shù)據(jù)插入到表中也需要一段時(shí)間。此時(shí)如果采用n語句對(duì)需要插入的大量記錄進(jìn)行分組,可以改善數(shù)據(jù)庫的性能。一方面可以讓客戶端與服務(wù)器端分工合作,客戶端一邊從外部文件中讀入數(shù)據(jù),服務(wù)器端一邊插入數(shù)據(jù),從而減少插入的時(shí)間。另一方面,數(shù)據(jù)分步在網(wǎng)絡(luò)在網(wǎng)絡(luò)中傳輸,也可以提高網(wǎng)絡(luò)傳輸?shù)男阅埽瑯涌梢云鸬教岣咝阅艿哪康摹?傊瑪?shù)據(jù)導(dǎo)入作業(yè)往往會(huì)降低數(shù)據(jù)庫正常運(yùn)行的性能。為此在DB2數(shù)據(jù)導(dǎo)入的時(shí)候,***選擇一個(gè)比較合適的時(shí)間。并且采用以上建議的一些措施來***程度的降低導(dǎo)入工作對(duì)數(shù)據(jù)庫的正常運(yùn)行帶來的負(fù)面影響。

三、讓活動(dòng)日志分次落實(shí)。

在數(shù)據(jù)導(dǎo)入的過程中,其最終還是需要通過Insert語句來實(shí)現(xiàn)。而DB2數(shù)據(jù)庫在使用這個(gè)語句的時(shí)候,數(shù)據(jù)庫引擎將會(huì)代表導(dǎo)入操作對(duì)標(biāo)更新進(jìn)行常規(guī)的記錄。這就好像是在Oracle數(shù)據(jù)庫中將這個(gè)表更新的操作記入到日志文件一樣。所以,當(dāng)導(dǎo)入的記錄比較多就會(huì)潛在的長時(shí)間占有當(dāng)前的活動(dòng)日志,最終導(dǎo)致數(shù)據(jù)庫管理器消耗完日志空間。為此,在導(dǎo)入數(shù)據(jù)的過程中,如果記錄的數(shù)據(jù)比較大,那么***使用COMMITCOUNT N子句。這個(gè)子句的主要作用就是告訴數(shù)據(jù)庫系統(tǒng),插入N條記錄之后就需要執(zhí)行一次日志落實(shí)。當(dāng)使用了這個(gè)子句的時(shí)候,如果導(dǎo)入操作失敗,那么在事務(wù)回滾期間,所有***一次落實(shí)以后執(zhí)行的的改變都會(huì)取消。這還可以減少數(shù)據(jù)導(dǎo)入失敗而造成的損失。如果沒有采用這個(gè)子句,如果導(dǎo)入失敗的話,數(shù)據(jù)庫系統(tǒng)會(huì)撤消所有導(dǎo)入的記錄。也就是說,一切都要重頭來過。但是如果采用了這個(gè)語句,那么數(shù)據(jù)庫管理員就可以根據(jù)系統(tǒng)提供的***一個(gè)落實(shí)點(diǎn)的信息,重新啟用Import命令,并通過提供RESTARTCOUNT N子句來指導(dǎo)這個(gè)命令跳過在前面已經(jīng)被報(bào)告為成功落實(shí)到輸入文件的行數(shù)。即避免重復(fù)導(dǎo)入,來提高數(shù)據(jù)導(dǎo)入效率。數(shù)據(jù)庫管理員可以根據(jù)記錄量的多少來合理的設(shè)置這個(gè)n值。一般情況下這個(gè)值不要設(shè)置的太大。不過如果太小的話,也會(huì)影響到數(shù)據(jù)導(dǎo)入的性能。如果數(shù)據(jù)量很大,筆者往往將這個(gè)值設(shè)置為500。不過具體情況具體對(duì)待,數(shù)據(jù)庫管理員還是需要根據(jù)經(jīng)驗(yàn)來判斷選擇一個(gè)合適的值。

四、在導(dǎo)入語句中采用格式化選項(xiàng)。

在導(dǎo)入數(shù)據(jù)的時(shí)候,一般要求外部文件都能夠遵守嚴(yán)格的格式。如果格式不準(zhǔn)確的話,那么往往數(shù)據(jù)導(dǎo)入會(huì)失敗。所以,有時(shí)候數(shù)據(jù)庫管理員在導(dǎo)入的過程中,還不得不采用一些文件類型修飾符,又叫做格式化選項(xiàng),來規(guī)范外部文件的格式。讓數(shù)據(jù)庫系統(tǒng)能夠正確識(shí)別外部文件,從而順利導(dǎo)入外部數(shù)據(jù)。

如默認(rèn)情況下,外部文件的列與列之間是用英文狀態(tài)下的逗號(hào)分割的。如果外部文件不是利用這個(gè)符號(hào)來分隔的,而是采用冒號(hào)或者TAB符號(hào)來符合來分隔的,此時(shí)數(shù)據(jù)庫管理員有兩個(gè)選擇。一是更改原文件中的分隔符號(hào)。利用操作系統(tǒng)的相關(guān)命令或者其他軟件的幫助,可以改變這個(gè)分隔符號(hào)。如通過Excle軟件來變更等等。二是在導(dǎo)入的時(shí)候,采用格式化選項(xiàng),讓導(dǎo)入工具能夠識(shí)別這個(gè)分隔符。如可以在導(dǎo)入語句中加入COLDEL :子句,告訴數(shù)據(jù)庫系統(tǒng),現(xiàn)在采用的列分隔符不是逗號(hào),而是冒號(hào)。如此在不更改原文件的情況下,也可以順利導(dǎo)入數(shù)據(jù)。

除此之外,有時(shí)候在外部文件中有可能還會(huì)因?yàn)槭韬鰧⒛硹l記錄寫成了兩行。由于默認(rèn)情況下是根據(jù)行來判斷記錄,而不是根據(jù)列分隔符來區(qū)分不同的記錄,所以此時(shí)這條記錄會(huì)被當(dāng)作兩條記錄來對(duì)待。為了避免這種情況,有時(shí)候數(shù)據(jù)庫管理員需要更改分隔符號(hào)的優(yōu)先極。默認(rèn)情況下,DB2數(shù)據(jù)庫分隔符的優(yōu)先極分別為記錄分隔符、字符串分隔符、列分隔符。也就是說記錄分隔符(往往是換行符號(hào))具有***的優(yōu)先級(jí)別。從而就會(huì)發(fā)生上面提到的情況。為了避免將一條記錄 (在兩行或者多行中顯示)被當(dāng)作多條記錄對(duì)待,***的方法就是利用 MODIFIED BY DELPRIORITYCHAR子句來更改分隔符號(hào)的優(yōu)先性。讓列分隔符號(hào)具有比較高的優(yōu)先級(jí)。
 

 

 

【編輯推薦】

DB2隔離級(jí)別--為落實(shí)的讀

DB2管理頁大小的限制

DB2客戶端的三種類型

創(chuàng)建DB2管理服務(wù)器的兩種情況

DB2循環(huán)查詢的實(shí)現(xiàn)

 

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-30 13:28:10

2010-08-31 10:53:18

DB2導(dǎo)入數(shù)據(jù)庫

2010-07-29 09:52:04

DB2數(shù)據(jù)導(dǎo)入

2010-08-17 16:24:32

IBM DB2數(shù)據(jù)庫

2010-08-06 15:27:14

DB2 batch u

2011-03-14 17:51:04

IBMDB2數(shù)據(jù)庫

2010-08-09 09:05:41

DB2快照函數(shù)

2010-07-29 13:56:32

2010-11-02 13:09:42

DB2性能優(yōu)化

2010-08-04 11:23:59

2010-08-04 10:44:32

2010-08-19 14:11:29

DB2臨時(shí)表

2010-08-03 17:00:29

DB2 batch u

2010-08-12 15:23:18

DB2數(shù)據(jù)遷移

2010-08-09 13:43:37

DB2數(shù)據(jù)遷移

2011-07-21 12:56:10

oralcedb2

2011-03-03 15:16:43

DB2數(shù)據(jù)庫遷移

2010-09-07 13:22:36

IBM DB2

2010-07-30 10:11:05

DB2臨時(shí)表

2010-08-20 09:21:18

DB2打上補(bǔ)丁
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线视频一区二区三区 | 久草青青 | 中国一级特黄毛片大片 | 国产综合精品 | 一区二区日韩 | 在线播放一区 | 91tv在线观看 | 女女百合av大片一区二区三区九县 | 久久国产高清 | xx视频在线| 国产91久久精品一区二区 | 中文字幕日韩一区 | 成人美女免费网站视频 | av在线免费观看网站 | 免费久久99精品国产婷婷六月 | 欧美日韩国产一区二区三区不卡 | 成人激情视频在线播放 | 久久99精品久久久久久 | 日韩av电影院| 欧美精品久久久久久久久老牛影院 | 国内精品一区二区 | 羞羞视频网站 | 男女羞羞免费视频 | 国产精品久久久久久久久久久久久 | 午夜天堂精品久久久久 | 亚洲一区综合 | 国产日韩欧美一区二区 | 91香蕉| 一区二区三区小视频 | 日韩黄 | 婷婷桃色网| 午夜视频免费在线观看 | 超碰在线久 | 美女视频一区二区三区 | 亚洲一区 | 久久天堂| 成人做爰69片免费观看 | 国产日韩一区 | 欧美日韩国产精品一区 | aaa级片 | 久久99精品久久久久久国产越南 |