色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL Server 數(shù)據(jù)導(dǎo)入:行為規(guī)范

瀏覽:155日期:2023-11-03 14:29:00

我最早使用的一個(gè)關(guān)系型 DBMS 就是 Microrim's R:Base 4000. R:Base,與其 PC 競(jìng)爭(zhēng)對(duì)手 dBase 不同的是,它是真正的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是在 20 世紀(jì) 80 年代初作為 NASA RIM(關(guān)系信息管理,Relational Information Management)系統(tǒng)的一個(gè) PC 版本開(kāi)發(fā)出來(lái)的。而我最欣賞的功能之一是它允許用戶在導(dǎo)入過(guò)程中查看示例數(shù)據(jù)。盡管像 bcp、DTS、新的 SQL Server 2005 集成服務(wù)這樣的工具以及各種移植工具和向?qū)б呀?jīng)將數(shù)據(jù)導(dǎo)入過(guò)程自動(dòng)化到 SQL Server 之中,但這不意味著我們可以一勞永逸。本月,Ron Talmage 提供一些關(guān)于導(dǎo)入數(shù)據(jù)的非常好的常識(shí)性建議。

SQL Server DBA(Database Administrator,數(shù)據(jù)庫(kù)管理員)發(fā)現(xiàn)他們經(jīng)常使用 T-SQL 導(dǎo)入和處理數(shù)據(jù)。為什么呢?因?yàn)橐恍?shù)據(jù)傳輸需要技術(shù)成熟的 SQL 所具備的強(qiáng)大功能。最近我剛好完成了另一個(gè)數(shù)據(jù)導(dǎo)入的案例,該案例觸動(dòng)我匯編了一份供我使用的行為規(guī)范列表。

確保將載入的原始數(shù)據(jù)暫存為 varchar 數(shù)據(jù)類型

源自所謂的舊式系統(tǒng)的原始數(shù)據(jù)通常以文本格式傳送,因此我首先總是將原始數(shù)據(jù)載入一個(gè)單獨(dú)的暫存數(shù)據(jù)庫(kù)。我從不嘗試將數(shù)據(jù)直接載入一個(gè)成品數(shù)據(jù)庫(kù)。

我做的事情是將所有 原始文本數(shù)據(jù)載入相應(yīng)的原始表,表中的列為 varchar 數(shù)據(jù)類型。(DTS 將自動(dòng)完成該過(guò)程,這樣很好。但是,DTS 還會(huì)將列命名為 COL001,因此您不用事先提供列名。)varchar 的主要優(yōu)點(diǎn)是它能夠接收任何數(shù)據(jù) — 甚至是“壞”數(shù)據(jù)。如果您嘗試從一個(gè)沒(méi)有對(duì)用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格檢查的舊式系統(tǒng)加載數(shù)據(jù),那么被忽略的數(shù)據(jù)或?qū)懭氘惓N募臄?shù)據(jù)可能比加載的數(shù)據(jù)還多,如果您不想冒這樣的風(fēng)險(xiǎn),除非接收每一個(gè)可能的值。將字符載入 varchar 數(shù)據(jù)類型的列則可以做到這一點(diǎn)。

在暫存表/列名時(shí)不要使用非字母數(shù)字字符

您可能無(wú)法控制在包含原始數(shù)據(jù)的表中如何對(duì)列進(jìn)行初始命名,但是我會(huì)嘗試修改可能包含空格或其他非常規(guī)字符的舊式列名。當(dāng)列名或表名包含非字母數(shù)字的字符時(shí),我們必須使用方括號(hào)或雙引號(hào)對(duì)其進(jìn)行分隔。這種代碼不但編寫(xiě)起來(lái)比較困難,而且可讀性較差。

不要在列名中使用關(guān)鍵字

源自舊式系統(tǒng)的數(shù)據(jù)通常包含能夠破壞 SQL 查詢的描述性列名。例如,房地產(chǎn)數(shù)據(jù)可能會(huì)包含一個(gè)名為 KEY 的列,它用來(lái)反映放置在待售房屋上的鑰匙箱。然而,KEY 也是 T-SQL 中的一個(gè)關(guān)鍵字 (!),如果使用這樣的列名,查詢操作在直接引用該列名時(shí)將失敗。因此,最終您必須用方括號(hào)或雙引號(hào)分隔含有關(guān)鍵字的列名。

確保使用正確的數(shù)據(jù)類型創(chuàng)建一個(gè)暫存表

下一步是創(chuàng)建一個(gè)或多個(gè)額外的暫存表,這些表有“正確的”數(shù)據(jù)類型。我喜歡使暫存表和目標(biāo) OLTP(Online Transaction Processing,聯(lián)機(jī)事務(wù)處理)數(shù)據(jù)庫(kù)中的目的表具有相同的列名。不管怎樣,重要的是原始數(shù)據(jù)中每列的數(shù)據(jù)類型在載入暫存時(shí)都將執(zhí)行檢查并予以改正。在 SQL Server 表中找到壞數(shù)據(jù)比在加載失敗的外部文件中找到壞數(shù)據(jù)容易得多。

確保將新列添加到暫存表中

當(dāng)暫存數(shù)據(jù)沒(méi)有相應(yīng)的列時(shí),您可以添加這些列,然后拆分或合并載入的數(shù)據(jù)。例如,即使目的表分解出街道名和門牌號(hào),地址仍然可能作為一個(gè)簡(jiǎn)單的字符串載入暫存表。那么您可以在暫存表中添加街道名列和門牌號(hào)列,將舊式地址分解為兩個(gè)列。這樣做的優(yōu)點(diǎn)是,原始數(shù)據(jù)與新拆分的數(shù)據(jù)并存,因此您能夠通過(guò)比較列來(lái)測(cè)試腳本。

確保使用本地副本來(lái)測(cè)試填充的產(chǎn)品數(shù)據(jù)

當(dāng)您準(zhǔn)備好要插入暫存表的數(shù)據(jù)時(shí),可以首先通過(guò)將其插入成品表的本地副本來(lái)測(cè)試這些數(shù)據(jù)。有時(shí)您只需清空表;有時(shí),您必須填充表。

確保保留產(chǎn)品約束

在副表上總是保留產(chǎn)品約束。這樣,您就能夠測(cè)試暫存表數(shù)據(jù)滿足這些約束的程度。這些約束包括 NULL、默認(rèn)值、檢查、主鍵和外鍵約束。首先保證副表列上的 NULL 或 NOT NULL 屬性與目標(biāo)系統(tǒng)的相同,然后再逐步檢查其他所有約束。如果您的測(cè)試表明暫存數(shù)據(jù)插入過(guò)程滿足所有約束,那么您距離成功就只有一步之遙了。

確保在一個(gè)產(chǎn)品數(shù)據(jù)副本上測(cè)試

雖然將導(dǎo)入數(shù)據(jù)插入空表將遇到很多潛在的問(wèn)題,但是不會(huì)遇到所有的問(wèn)題。在通過(guò)了所有之前的測(cè)試后,確保您將在一個(gè)目標(biāo)數(shù)據(jù)或成品系統(tǒng)的副本(或至少是一個(gè)合理的子集)上測(cè)試導(dǎo)入。您能夠接收的最終錯(cuò)誤類型將由數(shù)據(jù)配置決定,而且這是此項(xiàng)測(cè)試能夠檢測(cè)到的。那么,您就能夠在數(shù)據(jù)庫(kù)副本中檢查結(jié)果,甚至可能將應(yīng)用程序重定向到該副本以便進(jìn)一步測(cè)試和驗(yàn)證。【專欄作家 Tom Moreau 補(bǔ)充說(shuō),“使用每日成品更新數(shù)據(jù)進(jìn)行測(cè)試可以為數(shù)據(jù)移植做準(zhǔn)備。如果原來(lái)的系統(tǒng)沒(méi)有足夠的約束而新系統(tǒng)有,那么壞數(shù)據(jù)將進(jìn)入原來(lái)的系統(tǒng)并破壞您的移植。” - Ed.】

如果導(dǎo)入過(guò)程至此通過(guò)了所有測(cè)試,那么您可能已經(jīng)準(zhǔn)備好進(jìn)行導(dǎo)入數(shù)據(jù)了,或者至少可以將導(dǎo)入過(guò)程交給質(zhì)量管理員 (QA, Quality Assurance) 了。

主站蜘蛛池模板: 国产一级性生活 | 久久99亚洲精品久久久久 | 久久久亚洲精品蜜桃臀 | 亚洲欧美日韩国产综合高清 | 久操福利视频 | 午夜在线亚洲男人午在线 | 亚洲视频日韩视频 | 亚洲欧洲日韩在线 | 国产在线不卡免费播放 | 在线日韩欧美一区二区三区 | 国产成人精品免费视频网页大全 | 男人好大好硬好爽免费视频 | 亚洲免费精品视频 | 成人免费视频在 | 成人网18免费网站 | 中文字幕最新中文字幕中文字幕 | 欧美日a | 国产a国产片 | 久久香焦 | 国产免费高清福利拍拍拍 | 免费观看欧美一级毛片 | 久草网首页 | 国产欧美日韩精品在线 | 国产亚洲精品九九久在线观看 | 亚洲欧美综合国产精品一区 | 99久久精品免费看国产 | 香港免费毛片 | 国产精品九九久久一区hh | 国产成人一区二区三中文 | 欧美激情视频一级视频一级毛片 | 97超级碰碰碰碰在线视频 | 欧美日韩精品一区二区在线线 | 手机在线精品视频每日更新 | 久久精品7| 综合 欧美 国产 视频二区 | 亚洲三级在线看 | 亚洲精品视频免费看 | 午夜欧美精品久久久久久久久 | 9久re在线观看视频精品 | 久久精品国产亚洲a | 日韩一区二区三区视频在线观看 |