簡易版 Oracle XML_DB のデータのバッックアップ

めっちゃ簡易的にということでありますが、以前に紹介した
長いXML文章を登録する時のストアドを用います。

それでXMLTypeの箇所に対して下記のようなselect文を発行します。

select 'declare xmldoc CLOB; begin xmldoc := '''|| a.object_value.getclobval() || '''; insert into xmlTbl values( xmltype(xmldoc) ); end;',chr(13),'/', chr(13) from xmlTbl a

これで出力されたものをそのままコピペすれば
一括して登録できます。

sqlplusで出力する際にはXMLの要素などが途中で改行されないように、
set long 10000 pages 0 lin 300 などと幅を適切にしてあげてください。

ちなみにわたくしはJDeveloperで行いました。

やっぱこういうちょっとアコギなことするにはDB製品作ったとこのものを使用すれば
願ったとおりのことしてくれたりしますね♪

    • 2007/02/20 修正--

はい、頭の回転がいい人なら上のSQLをもうちょっと直してたりするでしょうけど…
↑のSQL
select 'declare xmldoc CLOB; begin xmldoc := '''|| a.object_value.getclobval() || '''; insert into xmlTbl values( xmltype(xmldoc) ); end;' || chr(13) || '/' || chr(13) || chr(13) from xmlTbl a
とすれば、sqlplusであればSPOOLした結果よりコピペで実行できます♪

あとポイントは「a.object_value.getclobval()」ですかね…
ほかの記事で書いてますが、getClobVal()とClob型で取得しないと、
長いXMLは取得できません。
また沢山データがあると、XML型そのもので取得する方がなんか時間が
かかるように思われます。

以上、修正レポートを現場からお送りいたしました(^^♪