亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

數據轉換沖突及轉換過程中大對象的處理

2024-08-31 00:59:32
字體:
來源:轉載
供稿:網友

數據轉換沖突及處理
  數據轉換沖突:
  在數據轉換過程中,要想實現嚴格的等價轉換是比較困難的。必須要確定兩種模型中所存在的各種語法和語義上的沖突,這些沖突可能包括:
  (1)命名沖突:源數據源的標識符可能是目的數據源中的保留字。
  (2)格式沖突:同一種數據類型可能有不同的表示方法和語義差異。
  (3)結構沖突:如果兩種DBMS之間的數據定義模型不同,如為關系模型和層次模型,則需要重新定義實體屬性和聯系,以防止屬性或聯系信息的丟失。
  (4)類型沖突:不同數據庫的同一種數據類型存在精度之間的差異。
  (5)其他沖突:不同數據庫的大對象類型存在不同的約束,而且存在一些特殊類型。如SQL SERVER中一個表中有多于一個TEXT或IMAGE的字段時,出現錯誤。而ORACLE也不允許一個表中的BLOB和LONG類型多于一個。
  沖突處理方法:
  對于以上數據轉換中的沖突,可進行相應的沖突處理。
  對于命名沖突,可以先檢查數據源中的保留字,建立保留字集合,對于保留字中的命名沖突,根據需要重新命名。
  對于格式沖突,可以根據ODBC SQL類型從數據源的驅動程序中取出相對應的數據源的數據類型后,對一些特定的類型進行特殊的處理。對于字符型數據中含有“'”字符的情況,在數據轉換過程中需通過轉義符作特殊處理,否則會把它誤當作字符串分隔符。
  對于不同數據庫的同一數據類型的精度沖突,類型轉換中將ODBC SQL類型和精度結合起來決定源數據類型和目標數據類型的映射關系。找出目的數據源中與源數據源類型的精度最匹配的數據類型作為缺省的映射關系。
  轉換過程中的數據類型匹配,日期型數據最好先轉換成字符型,然后根據不同的目標數據源分別作不同的處理。如ORACLE中使用TO_DATE函數,而FOXPRO中使用CTOD函數將日期格式的字符串轉換成日期。
  對于SQL SERVER中的TEXT、IMAGE類型,在進行轉換時需要做出選擇,或者把TEXT鏡像為VARchar2(4000),或者鏡像為LONG 類型,但Long 類型一個表里只能有一個。對于ORACLE,TEXT類型可以映像為CLOB類型,而IMAGE可以鏡像為BLOB。CLOB類型可以在一個ORACLE表里有多列。
  讀取數據源的元數據
  數據源的元數據類型
  元數據種類 元數據信息 用途
  數據源連接信息 數據庫名,驅動器, 用于連接源數據源和目的數據源
  服務器,DSN名,
  數據源描述,用戶名等
  表信息 表名,表屬主, 用于數據轉換中創建表
  表模式,表類型
  列信息 列名,類型,寬度, 用于數據轉換中表的創建以及列映射
  精度,標度,是否為空
  類型信息 類型名,最大列寬度, 用于數據轉換中表的創建以及類型映射
  最大最小標度,
  前后綴字符,
  是否接受空,
  關鍵字列表
  鍵信息 主鍵名,主鍵列, 用于數據轉換中表模式的轉換
  外鍵名,外鍵列,
  外鍵關聯列
  其它對象信息:索引信息,存儲過程信息,權限信息等 用于數據轉換中數據庫對象的轉換。
  數據源的元數據讀取方法:
 ?。?)調用ODBC API函數:
  可以直接調用ODBC API函數讀取數據源的元數據。即分別調用以下函數SQL Tables,SQL Columns, SQL DescribeCol,SQL Get TypeInfo,SQL Foreign Keys,SQLPrimary Keys,SQL ProcedureColumns,SQL Procedures, SQL Statistics,SQL TablePrivileges,SQL Column Privileges獲得數據源中的表信息,列信息,類型信息,鍵信息以及其他對象信息等。其主要步驟是連接數據源,分配語句句柄,然后調用ODBC API來獲取各種元數據信息。
  然而直接調用ODBC API函數比較復雜,各種參數不易理解,且直接獲取返回的數據較困難。VC++的MFC類庫對ODBC的API進行封裝,部分簡化了ODBC調用(尤其是對數據庫記錄集的操作),但單純利用MFC類獲取異構型數據庫的結構信息仍然比較困難,因此需要將MFC和直接調用ODBC API方法結合起來。利用ODBC接口函數重載了MFC中CRecordset類的部分成員函數,創建CTable,CColumns,CTypes,CPrimaryKeys等類。利用這些新創建的類,可以很方便的獲取異構型數據庫結構信息。
 ?。?)通過ADO對象:
  通過ADO中CONNECTION對象的GetTableNames 方法可以得到數據源的表信息,而通過ADO中RECORDSET對象中的FieldDefs屬性可以得到數據集的各種列信息和類型信息。在得到數據源的元數據前,必須先創建CONNECTION對象連接數據源,并通過數據集對象RECORDSET來打開相應的數據表,之后即可以取得相應的數據源的元數據。
  數據類型轉換
  3異構數據源數據類型概述:
  對不同數據庫系統,每個DBMS都定義了一套自己的數據類型,但不論數據類型在各個系統中如何變化,其功能都滿足用戶的數據處理基本要求,如數值型,包括整型、實型、浮點型、雙精度型等;字符型,包括定長、變長等;日期型,包括年、月、日和小時、分、秒等;長字符型,包括文本類型,還有錢幣型等。隨著數據庫系統的不斷發展和版本的不斷升級,數據類型的種類也不斷增多,如超文本和二進制處理多媒體和大文本的數據類型。這些帶有共性的東西,給系統間的數據轉換帶來了可能和方便,但不同的數據庫的數據類型也是有差異的。其自身定義和擴充之間的區別,也給系統間的數據轉換帶來了許多困難。例如,DBMS返回的日期和時間數據格式在各個DBMS中有很大的不同。有些系統以8字節整數格式返回日期和時間,另外一些以浮點數格式返回。并且有的DBMS含有LONG類型,其它DBMS無此類型。所以異種數據庫數據類型轉換的關鍵是找出其中的對應關系。
  數據類型轉換方法一:(設計類型映射表)
  為了實現相互數據轉換,必須設計多個相應的雙向數據轉換程序并且解決不同的數據類型匹配問題。當增加一個數據庫系統時,相應要解決該數據庫系統與已存在的多個異構庫的數據類型匹配問題,并增加多個對應轉換程序。為了實現程序的擴展性,可以通過設計類型映射表來解決類型轉換問題。
  將不同數據庫系統數據類型的對應關系和相應的數據轉換處理程序分離開,使數據轉換程序相對獨立,而把類型轉換關系在專門的表結構中存儲。通過對不同數據庫系統之間的數據類型進行詳細而深入的分析,找出了不同數據庫系統不同版本的各個不同類型之間缺省的類型對應關系及可能存在的對應關系,將這些數據預先存入類型映射表中。
  數據類型轉換方法二:(利用ODBC SQL類型)
  存儲在數據源中的數據都有一個數據類型,稱為數據源數據類型或SQL數據類型。SQL數據類型是按照SQL-92標準由每一個DBMS定義,可以是某個數據源特有的。驅動程序在ODBC SQL語法及驅動程序數據類型中也定義了一套數據類型稱為ODBC SQL數據類型(以SQL前綴開頭的數據類型)。每個驅動程序負責映射特定數據來源的SQL數據類型到ODBC SQL數據類型標識符。因此,不同的數據源在進行數據轉換的過程中可以通過ODBC SQL數據類型標識符作為基準來得到數據類型的缺省映射關系。驅動程序通過函數SQLGetTypelnfo返回數據源的SQL數據類型和ODBC SQL數據類型的映射關系,在函數SQLCo1Attributes,SQLDescribeCol和 SQLDescribeParm中,驅動程序還用ODBC SQL數據類型來描述列和參數的數據類型。
  此外,ODBC還提供一套以SQL_C前綴開頭的ODBC C數據類型。ODBC C數據類型指出了在應用程序中用于存儲數據的C緩沖區的數據類型。所有驅動程序必須支持所有的C數據類型,而且支持所有C類型到相應的SQL類型的轉換,并且所有的驅動程序至少支持字符SQL類型,使得DBMS的數據類型都能映射到一種C語言的數據類型,這樣在傳遞過程中不會改變數據。每一個SQL數據類型與一個ODBC C數據類型相適應。在從數據源返回數據之前,驅動程序將它轉換到指定的C數據類型。在發送數據到數據來源之前,驅動程序將它從指定C數據類型轉換到SQL數據類型。
  數據轉換過程中大對象的處理
  大對象類型概述:
  大對象類型BLOB全稱為Binary Large Objects,即二進制大對象。可以把BLOB區別為三種形式:聲像數據、二進制數據和大文本數據。因此,最常見的應用就是存儲圖形、聲音等對象,此外大二進制對象、OLE對象也可以通過BLOB類型存入數據庫,如果文本對象過大,超出了文本類型的規定長度,則必須用BLOB字段進行存儲。我們在經常使用的編程環境中并不能直接支持BLOB字段,因此需要調用相應的函數完成BLOB的使用。
  不同的數據庫系統對大對象類型的支持不同,常用數據庫系統支持的大對象數據類型如表4所示:
  數據庫系統支持的大對象數據類型:
  SQL SERVER "sql_variant","ntext","image","varbinary","binary","text"
  ORACLE "BLOB","LONG RAW","BFILE","RAW","CLOB","LONG"
  SYBASE "LONG VARchar"
  VFP "MEMO"
  ACCESS "OLE OBJECT","MEMO"
  KINGBASE "blob","text","bytea","varbinary","binary","text"
  大對象的存取方法:
  (1)利用MFC提供的CLongBinary類:
  VC存取大對象數據有眾多方法,如OLE、ActiveX等,而VC的MFC提供的CLongBinary類可以方便地實現存取BLOB字段。使用CLongBinary類可以存取超過MAXINT數目的數據,最大為可以得到的內存容量。但數據完全保存在內存中,對超大量數據消耗太大。
  (2)利用ODBC的SQLGetData和SQLPutData函數:
  對于不能存儲在單一緩沖區中的數據,在行中的其他數據已被獲取之后,可以直接用SQLGetData分批從驅動程序檢索這些數據。為了從一列檢索長數據,應用程序首先調用SQLFetchScroll或SQLFetch移動一行,并且調用SQLGetData獲取綁定列的數據。SQLPutData允許在應用程序語句執行時,把參數或字段送到驅動程序。該函數用來把字符或二進制數值送到。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美怡春院一区二区三区| 中文字幕欧美精品日韩中文字幕| 91成人免费观看网站| 久久久91精品| 亚洲一区二区三区视频| 日韩成人中文字幕在线观看| 中国日韩欧美久久久久久久久| 狠狠躁天天躁日日躁欧美| 久久久国产视频| 日韩免费在线视频| 国产一区二区三区直播精品电影| 97超视频免费观看| 国产亚洲成av人片在线观看桃| 91网站在线看| 日韩高清电影好看的电视剧电影| 性亚洲最疯狂xxxx高清| 亚洲九九九在线观看| 色多多国产成人永久免费网站| 精品久久香蕉国产线看观看gif| 日韩av电影国产| 欧美一区二区大胆人体摄影专业网站| 国产精品永久在线| 国产成人av网| 亚洲福利影片在线| 久久好看免费视频| 成人福利网站在线观看| 最近中文字幕日韩精品| 91在线免费视频| 亚洲精品二三区| 中文字幕精品在线| 国产精品mp4| 久久偷看各类女兵18女厕嘘嘘| 久久久999精品免费| 国产精品福利片| 狠狠躁夜夜躁人人躁婷婷91| 欧美一级bbbbb性bbbb喷潮片| 粗暴蹂躏中文一区二区三区| 美女啪啪无遮挡免费久久网站| 91精品国产91久久久久| 中文国产亚洲喷潮| 亚洲摸下面视频| 精品人伦一区二区三区蜜桃网站| 国产日本欧美视频| 91在线视频一区| 国产精品一区二区三区久久| 日韩中文字幕国产精品| 中文字幕日韩免费视频| 91精品国产综合久久久久久蜜臀| 日韩大胆人体377p| 亚洲人成电影网站色xx| 国产精品99免视看9| 国产精品亚洲аv天堂网| 日韩激情av在线播放| 国产一区二区精品丝袜| 国产精品扒开腿做爽爽爽视频| 国产香蕉精品视频一区二区三区| 欧美黑人性生活视频| 成人激情黄色网| 亚洲性生活视频在线观看| 91豆花精品一区| 日韩视频一区在线| 色噜噜狠狠色综合网图区| 国产日韩精品综合网站| 亚洲综合在线播放| 欧美成人精品在线| 一区二区三区无码高清视频| 亚洲国产成人av在线| 国产成人精品久久| 欧美日韩国产麻豆| 91午夜在线播放| 久久久精品欧美| 国产黑人绿帽在线第一区| 欧美在线观看网站| 中文字幕精品网| 91色精品视频在线| 欧美日韩成人网| 国产精品自拍偷拍| 国产精品日韩欧美| 91精品免费久久久久久久久| 国产成人精品一区二区| 亚洲欧美激情另类校园| 欧美成人自拍视频| 日韩激情片免费| 亚洲成人网在线| 亚洲视频第一页| 欧美成人免费一级人片100| 中文字幕亚洲无线码a| 91在线色戒在线| 亚洲aⅴ日韩av电影在线观看| 高清欧美一区二区三区| 久久久精品美女| 26uuu日韩精品一区二区| 欧美激情国产日韩精品一区18| 亚洲一区二区中文字幕| 亚洲天堂免费观看| 日韩av大片免费看| 92看片淫黄大片看国产片| 亚洲男人第一网站| 成人做爰www免费看视频网站| 亚洲国语精品自产拍在线观看| 91香蕉嫩草神马影院在线观看| 亚洲最大av在线| 日本精品一区二区三区在线播放视频| 亚洲国语精品自产拍在线观看| 91情侣偷在线精品国产| 亚洲欧美国产日韩中文字幕| 国产综合福利在线| 久久免费视频在线观看| xvideos亚洲人网站| 国内精品一区二区三区| 欧美电影在线观看| 69精品小视频| 一本大道久久加勒比香蕉| 精品国产欧美一区二区三区成人| 久久成人这里只有精品| 成人中文字幕在线观看| 日韩小视频网址| 色偷偷888欧美精品久久久| 欧美色视频日本高清在线观看| 国产香蕉一区二区三区在线视频| 九九久久综合网站| 久久好看免费视频| 精品久久久久久久久国产字幕| 91高潮精品免费porn| 另类天堂视频在线观看| 欧美一级成年大片在线观看| 98精品国产自产在线观看| 国产女同一区二区| 精品国产一区二区三区久久久狼| 亚洲精品自拍视频| 国模精品系列视频| 一区二区三区久久精品| 亚洲福利视频免费观看| 国产精品白丝jk喷水视频一区| 国产精品视频网站| 久久久久一本一区二区青青蜜月| 国产精品扒开腿做爽爽爽视频| 国内精品国产三级国产在线专| 精品久久久久久久久久ntr影视| 欧美另类精品xxxx孕妇| 岛国av在线不卡| 8x拔播拔播x8国产精品| 欧美成人精品在线视频| 亚洲性生活视频| 国产精品久久一| 亚洲毛茸茸少妇高潮呻吟| 黑人狂躁日本妞一区二区三区| 日韩电影中文字幕| 伊人一区二区三区久久精品| 欧美精品日韩三级| 影音先锋欧美在线资源| 欧美在线激情网| 久久久久久久一区二区| 国产精品久久久久影院日本| 欧洲日韩成人av| 午夜精品久久久久久99热软件| 91sao在线观看国产| 国产精品va在线播放我和闺蜜| 久久综合久久美利坚合众国| 久久成人18免费网站| 欧美大片网站在线观看| 久久久中文字幕| 97在线精品国自产拍中文| 欧美又大粗又爽又黄大片视频|