簡易版 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型そのもので取得する方がなんか時間が
かかるように思われます。
以上、修正レポートを現場からお送りいたしました(^^♪