| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

DB2 XML DB (pureXML)

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

DB2 XML DB (pureXML)

DB2 | XML | XQuery |

ステートメント終了文字の変更

  • DB2 コマンド・ウィンドウで、db2 -td~ コマンド (-td~ オプションを指定したdb2 コマンド) を発行して DB2 コマンド行プロセッサーを開始
  • -td オプションは、ティルド (~) をステートメント終了文字として設定
  • 。ネーム・スペース宣言の終了文字もセミコロンであるため、デフォルトのセミコロン(-t オプション) 以外の終了文字を指定することによって、ネーム・スペース宣言を使用するステートメントまたは照会が誤って解釈されないようにします
IBM DataStudio での設定

0332 xmldb01.jpg

XML データを格納する DB2 データベースおよび表を作成

  • XML データを保管または索引付けする場合、主キーは不要
create table android_manifest(apk varchar(255) not null primary key , manifest xml)~

XML データに索引を作成

  • 述部および文書をまたいだ結合で頻繁に使用される XML エレメントまたは属性に索引
  • リレーショナル索引および XML データに対する索引は両方とも、列を索引付け
  • リレーショナル索引が列全体に索引を付けるのに対して、XML データに対する索引は列の一部に索引を付ける
  • XML 列のどの部分に索引を付けるかを、XML パターン (限定された XPath 式) を指定
  • 索引付きの値が格納されるデータ・タイプを指定する必要もある
  • 単一の XML 列のみ索引を付けられます。複合索引はサポートされていません
create index package_xmlidx on android_manifest(manifest) 
generate key using xmlpattern 	
  'declare default element namespace "http://schemas.android.com/apk/res/android"; /manifest/@package' 
as sql varchar hashed

XML タイプ列に XML 文書を挿入

  • 整形式 XML 文書は、INSERT SQL ステートメントを使用して、XML タイプ列に挿入
  • ほとんどの場合、ストリング・データを XML データ・タイプのターゲットに直接割り当てることはできません。まず XMLPARSE 関数を使用してそのデータを明示的に構文解析する必要があります
  • INSERT、UPDATE、または DELETE 操作では、XMLPARSE 関数を明示的に呼び出さなくても、ストリング・データを XML 列に接割り当てることができます
  • ストリング・データは暗黙的に構文解析されます
insert into android_manifest(apk, manifest) values ('info.typea.eitangoroid.free',
'<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:installLocation="auto" 
      package="info.typea.eitangoroid.free" android:versionCode="12" android:versionName="0.65">
    <application android:icon="@drawable/icon" 
        android:label="@string/app_name" 
        android:name="info.typea.eitangoroid.FlippadApplication" android:debuggable="false">
        <meta-data android:name="android.app.default_searchable"
                    android:value="info.typea.eitangoroid.WordSearchableActivity"/>
        <activity android:label="@string/app_name" android:name="FlippadroidMainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="info.typea.eitangoroid.WordSearchableActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>   
            <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>     
        </activity>
        <activity android:name="info.typea.eitangoroid.FlippadActivity"></activity>
        <activity android:name="info.typea.eitangoroid.WordBookListActivity"></activity>
        <activity android:name="info.typea.eitangoroid.FlippadPreferenceActivity"></activity>
        <activity android:name="info.typea.eitangoroid.WordEditorActivity"></activity>
        <activity android:name="info.typea.eitangoroid.WorkingSetEditorActivity"></activity>    
        <receiver android:name="info.typea.eitangoroid.HeadsetStateReceiver">
            <intent-filter>
                <action android:name="android.intent.action.HEADSET_PLUG"/>
            </intent-filter>
        </receiver>        
    </application>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
    <uses-sdk android:minSdkVersion="8" />
</manifest>')~

レコードが正常に挿入されたことを確認

select * from android_manifest~
IBM DataStudio で確認

0333 xmldb02.jpg