国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

SQL Server 數據導入:行為規范

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

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

SQL Server DBA(Database Administrator,數據庫管理員)發現他們經常使用 T-SQL 導入和處理數據。為什么呢?因為一些數據傳輸需要技術成熟的 SQL 所具備的強大功能。最近我剛好完成了另一個數據導入的案例,該案例觸動我匯編了一份供我使用的行為規范列表。

確保將載入的原始數據暫存為 varchar 數據類型

源自所謂的舊式系統的原始數據通常以文本格式傳送,因此我首先總是將原始數據載入一個單獨的暫存數據庫。我從不嘗試將數據直接載入一個成品數據庫。

我做的事情是將所有 原始文本數據載入相應的原始表,表中的列為 varchar 數據類型。(DTS 將自動完成該過程,這樣很好。但是,DTS 還會將列命名為 COL001,因此您不用事先提供列名。)varchar 的主要優點是它能夠接收任何數據 — 甚至是“壞”數據。如果您嘗試從一個沒有對用戶輸入的數據進行嚴格檢查的舊式系統加載數據,那么被忽略的數據或寫入異常文件的數據可能比加載的數據還多,如果您不想冒這樣的風險,除非接收每一個可能的值。將字符載入 varchar 數據類型的列則可以做到這一點。

在暫存表/列名時不要使用非字母數字字符

您可能無法控制在包含原始數據的表中如何對列進行初始命名,但是我會嘗試修改可能包含空格或其他非常規字符的舊式列名。當列名或表名包含非字母數字的字符時,我們必須使用方括號或雙引號對其進行分隔。這種代碼不但編寫起來比較困難,而且可讀性較差。

不要在列名中使用關鍵字

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

確保使用正確的數據類型創建一個暫存表

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

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

當暫存數據沒有相應的列時,您可以添加這些列,然后拆分或合并載入的數據。例如,即使目的表分解出街道名和門牌號,地址仍然可能作為一個簡單的字符串載入暫存表。那么您可以在暫存表中添加街道名列和門牌號列,將舊式地址分解為兩個列。這樣做的優點是,原始數據與新拆分的數據并存,因此您能夠通過比較列來測試腳本。

確保使用本地副本來測試填充的產品數據

當您準備好要插入暫存表的數據時,可以首先通過將其插入成品表的本地副本來測試這些數據。有時您只需清空表;有時,您必須填充表。

確保保留產品約束

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

確保在一個產品數據副本上測試

雖然將導入數據插入空表將遇到很多潛在的問題,但是不會遇到所有的問題。在通過了所有之前的測試后,確保您將在一個目標數據或成品系統的副本(或至少是一個合理的子集)上測試導入。您能夠接收的最終錯誤類型將由數據配置決定,而且這是此項測試能夠檢測到的。那么,您就能夠在數據庫副本中檢查結果,甚至可能將應用程序重定向到該副本以便進一步測試和驗證。【專欄作家 Tom Moreau 補充說,“使用每日成品更新數據進行測試可以為數據移植做準備。如果原來的系統沒有足夠的約束而新系統有,那么壞數據將進入原來的系統并破壞您的移植。” - Ed.】

如果導入過程至此通過了所有測試,那么您可能已經準備好進行導入數據了,或者至少可以將導入過程交給質量管理員 (QA, Quality Assurance) 了。

標簽: Sql Server 數據庫
主站蜘蛛池模板: 国产欧美日韩精品a在线观看 | 一级成人毛片免费观看欧美 | 欧美日韩精品一区二区三区不卡 | 真人一级毛片全部免 | 国产精品99久久免费观看 | 99精品网站 | 亚洲综合色自拍一区 | 日本三级香港三级人妇gg在线 | 草免费视频 | 香港三级日本三级妇人三级 | 一级特黄aaa免费 | 亚洲图片偷拍区 | 亚洲欧美日韩国产精品一区 | 亚洲国产天堂在线网址 | 欧美视频在线观看网站 | 欧美成人午夜毛片免费影院 | 狠狠色狠狠色综合久久第一次 | 黄色一级毛片 | 国产日韩精品一区二区在线观看 | 国产一线视频在线观看高清 | 中国做爰国产精品视频 | 日韩欧国产精品一区综合无码 | 久久久久久久久久久大尺度免费视频 | 久久凹凸 | 久夜色精品国产一区二区三区 | 国产精品亚洲欧美日韩一区在线 | 午夜一级毛片免费视频 | 国产亚洲午夜精品a一区二区 | 国产成人精品午夜二三区 | 成人在线视频免费观看 | 国产在线黄| 一级特级欧美aaaaa毛片 | 欧美成本人视频 | 成年日韩片av在线网站 | 男人的天堂毛片 | 性做久久久久久免费观看 | 亚洲综合区 | 91热成人精品国产免费 | 久久久久久国产精品免费免 | 美毛片| 国产高清一区二区三区免费视频 |