TERADATA XML類型簡介

簡介

Teradata數(shù)據(jù)庫 (以下簡稱TD) 為存儲和處理XML數(shù)據(jù)提供以下支持:

  • XML數(shù)據(jù)類型蕊退,允許用戶以緊密二進制形式存儲XML內(nèi)容澳盐,用來保留XML文檔的信息集
  • 支持常見XML操作,如解析,驗證,轉(zhuǎn)換(XSLT)和查詢(XPath和XQuery)等和方法
  • 用于查詢和轉(zhuǎn)換XML內(nèi)容的XQuery查詢語言
  • 存儲過程,允許用戶以XML格式發(fā)布SQL查詢的結果
  • 粉碎功能蔫仙,允許用戶從XML文檔中提取值并使用它們來更新數(shù)據(jù)庫表

XML 數(shù)據(jù)類型

TD為XML數(shù)據(jù)提供了XML數(shù)據(jù)類型。你可以像使用其他TD支持的SQL數(shù)據(jù)類型一樣使用它丐箩。它可以保留XML文檔的信息集摇邦,包括從XML驗證派生的層次結構信息和類型信息。XML類型可以存儲最大2GB的XML數(shù)據(jù)雏蛮,并支持XML處理功能涎嚼。

創(chuàng)建新的XML類型實例

你可以通過以下方法創(chuàng)建XML類型實例:

  • New 操作符
  • CREATEXML 函數(shù)
  • XMLPARSE 函數(shù)

例如以下例子,我們假設XML數(shù)據(jù)以文本形式被載入到customerText表的customerXMLText (VARCHAR或者CLOB類型)的列中挑秉。然后我們可以利用New 操作符來從以文本表達的XML數(shù)據(jù)中創(chuàng)建一個XML實例法梯。

SELECT customerID, (NEW XML(customerXMLText)).XMLEXTRACT('/Customer/Address', NULL)
FROM customerText;

查詢的結果如下:

customerID NEW XML(customerXMLText).XMLEXTRACT('/Customer/Address', Null)
-------------------------------------------------------------------------
1 <Address>100 1st Street, San Francisco, CA 94118</Address>

同樣地我們也用用CREATEXML來創(chuàng)建相應實例:

SELECT customerID, (CREATEXML(customerXMLText)).XMLEXTRACT('/Customer/Address', NULL)
FROM customerText;

用法

你可以指定XML類型:

  • 在表定義中
    注意:XML類型是LOB類型,最多一行占用4096個字節(jié)×⒀疲考慮到一個64K的行大小夜惭,你可以在單個表上定義不超過15個XML類型的列。
  • 作為存儲過程中的IN铛绰,OUT或INOUT參數(shù)
  • 作為結構化UDT的一部分

INSERT and UPDATE statements can also assign XML type values to columns.

限制

你不能將XML類型指定為:

  • UDF或UDM中的輸入?yún)?shù)或結果類型
  • 外部存儲過程中的IN诈茧,OUT或INOUT參數(shù)

UDF,UDM和外部存儲過程只能將XML數(shù)據(jù)處理為VARCHAR捂掰,CLOB敢会,VARBYTE或BLOB值; 因此,在將XML值傳遞給外部例程之前这嚣,必須使用XMLSERIALIZE函數(shù)將XML值序列化為VARCHAR鸥昏,CLOB,VARBYTE或BLOB值姐帚。 您可以使用CREATEXML函數(shù)將外部例程的結果轉(zhuǎn)化為XML類型值吏垮。

  • XML類型可以容納最大2GB的值。However, operations like XSLT and XQuery are only supported on documents that are smaller in size where the processing operation does not require more memory than specified by the XML_MemoryLimit DBS Control field.
  • XML類型的列不能:
    • 存在于隊列表中
    • 成為索引的一部分
    • 參與JOIN操作
  • 你不能在依賴于排序或比較的子句中使用XML類型的列罐旗,例如ORDER BY膳汪,GROUP BY或HAVING。
  • 你不能在算術表達式中使用XML值九秀。 XML值可以是一個類型遗嗽,如xs:int,可用于算術計算鼓蜒。 在這種情況下媳谁,您可以將XML值轉(zhuǎn)換為適當?shù)腟QL類型來執(zhí)行計算。
  • XML類型值不具有可比性友酱,不應在關系比較操作中使用(例如>,<柔纵,=)缔杉。 XML值可以顯式轉(zhuǎn)換為其他標量SQL類型,這些類型的值可能是可比較的搁料。 例如或详,如果已知該值是XML類型xs:int,則可以將其轉(zhuǎn)換為SQL整數(shù)數(shù)據(jù)類型郭计。

注意:因為XML值不具有可比性霸琴,所以它們不包含在對行重復的檢查中(例如,在插入到一個集表中)昭伸。 這種行為類似于也不參與行重復檢查的CLOB / BLOB類型梧乘。

  • 盡管XML值的外部表示是字符串類型,但是字符串操作不能直接在XML值上使用。 在應用字符串操作之前选调,可以對XML進行序列化或強制轉(zhuǎn)換以生成字符串表示夹供。

排序

XML值不具有可比性。 在任何依賴比較值(如ORDER BY仁堪,GROUP BY或DISTINCT)的子句中引用XML類型列都會導致錯誤哮洽。

轉(zhuǎn)換

從其他SQL類型轉(zhuǎn)換為XML類型時,an XML value of the nearest xml schema primitive type is created. 弦聂。 例如鸟辅,VARCHAR / CLOB的xs:string和DATE的xs:date。在向另一個方向轉(zhuǎn)換時莺葫,XML實例的字符串值應該與目標數(shù)據(jù)類型兼容匪凉。 例如,將xs:date值轉(zhuǎn)換為SQL DATE類型徙融。
以下數(shù)據(jù)類型支持向和從XML類型轉(zhuǎn)換洒缀。
VARCHAR | CLOB | VARBYTE | BLOB | BYTEINT | SMALLINT
INTEGER | DATE | DECIMAL | FLOAT | NUMBER |BIGINT
TIME | TIME WITH TIMEZONE
TIMESTAMP | TIMESTAMP WITH TIMEZONE

注意:從大對象類型(CLOB和BLOB)轉(zhuǎn)換為XML類型受限于其大小,只有小于64K才能成功轉(zhuǎn)換欺冀。

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

要將存儲在VARCHAR或CLOB列中的XML數(shù)據(jù)遷移到具有XML類型列的等效模式树绩,請執(zhí)行以下操作:

  1. 驗證XML數(shù)據(jù)是否格式正確,并符合XML格式的規(guī)則隐轩。
  2. 使用XML類型為保存XML數(shù)據(jù)的列創(chuàng)建新版本的表饺饭。
  3. 使用NEW XML運算符或CREATEXML函數(shù)將XML文本插入到XML列中。

范例

該語句創(chuàng)建一個包含XML類型列customerXML的表:

CREATE TABLE customer (
    customerID INTEGER,
    customerName VARCHAR(256),
    customerXML XML 
)  PRIMARY INDEX (customerID);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末职车,一起剝皮案震驚了整個濱河市瘫俊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悴灵,老刑警劉巖扛芽,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異积瞒,居然都是意外死亡川尖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門茫孔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叮喳,“玉大人,你說我怎么就攤上這事缰贝♀晌颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵剩晴,是天一觀的道長锣咒。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么宠哄? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任壹将,我火速辦了婚禮,結果婚禮上毛嫉,老公的妹妹穿的比我還像新娘诽俯。我一直安慰自己,他們只是感情好承粤,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布暴区。 她就那樣靜靜地躺著,像睡著了一般辛臊。 火紅的嫁衣襯著肌膚如雪仙粱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天彻舰,我揣著相機與錄音伐割,去河邊找鬼。 笑死刃唤,一個胖子當著我的面吹牛隔心,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尚胞,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硬霍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笼裳?” 一聲冷哼從身側(cè)響起唯卖,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躬柬,沒想到半個月后拜轨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡允青,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年撩轰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昧廷。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偎箫,靈堂內(nèi)的尸體忽然破棺而出木柬,到底是詐尸還是另有隱情,我是刑警寧澤淹办,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布眉枕,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏速挑。R本人自食惡果不足惜谤牡,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姥宝。 院中可真熱鬧翅萤,春花似錦、人聲如沸腊满。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碳蛋。三九已至胚泌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肃弟,已是汗流浹背玷室。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笤受,地道東北人穷缤。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像感论,于是被迫代替她去往敵國和親绅项。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容