楼主: AnddyHua

[SQL] 【讨论】求思路,XML转关系型SQL

[复制链接]
认证徽章
论坛徽章:
8
宝马
日期:2013-12-30 15:12:362014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08青年奥林匹克运动会-击剑
日期:2014-08-26 08:46:14马上加薪
日期:2014-12-15 14:55:28马上加薪
日期:2015-01-30 09:13:41美羊羊
日期:2015-03-19 15:04:19水瓶座
日期:2016-01-28 10:23:13
发表于 2014-7-3 16:26 | 显示全部楼层
2009532140 发表于 2014-7-3 16:23
经常看见老哥用awk 玩文本处理,NB 的很啊

awk只是趣味,
oracle才是我喜欢的;

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-3 22:12 | 显示全部楼层
AnddyHua 发表于 2014-7-3 06:08
恩, 没编辑好,是的,newkid已经改了

要怎么样才能运行你顶楼的SQL呢?建表之后怎么办?XML要插入到哪里?
我试着执行之后它没有返回任何数据。

使用道具 举报

回复
论坛徽章:
17
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-04 14:53:16马上加薪
日期:2014-12-18 01:09:30祖国65周年纪念徽章
日期:2014-09-27 08:49:22马上有房
日期:2014-07-16 11:59:32优秀写手
日期:2014-07-10 06:00:12马上加薪
日期:2014-04-20 23:04:51马上有对象
日期:2014-04-19 23:32:33马上有车
日期:2014-03-29 23:05:24问答徽章
日期:2014-01-17 15:19:03
 楼主| 发表于 2014-7-4 11:26 | 显示全部楼层
newkid 发表于 2014-7-3 22:12
要怎么样才能运行你顶楼的SQL呢?建表之后怎么办?XML要插入到哪里?
我试着执行之后它没有返回任何数据 ...

newkid 这个涉及到到怎么配置oracle XDB了,这个xml是FTP进Oracle XML repository没注册XML schema
简单的步骤我
oracle 里提供了学习的demo,官方的只提供windows 版的,建议安装xfile.5和 INTRODUCTION_11.2.0.3.0.zip,xfiles.5 提供web管理基本功能和demo,因为这不是必须的,其实xfiles是用sevlet写的一个访问XDB的web容器,许多demo安装都需要xfiles,一般ftp 端口打开就能上传了,不想装的就忽略
官方地址:http://www.oracle.com/technetwork/indexes/samplecode/xmldb-sample-523617.html

1.创建xfiles用户,简单的赋权,要连接xfiles,以后还需要几个role

create user xfiles  identified by xfiles;

grant connect,resource to xfiles;

Grant succeeded.
SQL> show parameter dispa

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dispatchers                          string      (PROTOCOL=TCP) (SERVICE=HUAXDB)
max_dispatchers                      integer
SQL>

2.修改监听文件,我的监听文件为例:
  1.     LISTENER =  
  2.       (DESCRIPTION_LIST =  
  3.         (DESCRIPTION =  
  4.           (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-20131014PGO)(PORT = 1521))  
  5.         )  
  6.          (DESCRIPTION=  
  7.           (ADDRESS=(PROTOCOL=tcp)(HOST=WIN-20131014PGO)(PORT=80))  
  8.            (PROTOCOL_STACK=  
  9.             (PRESENTATION=HTTP)(SESSION=RAW))  
  10.          )  
  11.       )  
复制代码
3.配置HTTP和FTP端口,注意到system用户下

sqlplus system/oracle@HUA as sysdba

exec dbms_xdb.sethttpport(80);
exec dbms_xdb.setftpport(21);
4.检查下监听状态,确认service和端口
  1. Listening Endpoints Summary...  
  2.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-20131014PGO)(PORT=1521)))  
  3.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-20131014PGO)(PORT=80))(PROTOCOL_STACK=(PRESENTATION=HTTP)(SESSION=RAW)))  
  4.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-20131014PGO)(PORT=21))(Presentation=FTP)(Session=RAW))  
  5. Services Summary...  
  6. Service "CLRExtProc" has 1 instance(s).  
  7.   Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...  
  8. Service "HUA" has 2 instance(s).  
  9.   Instance "HUA", status UNKNOWN, has 1 handler(s) for this service...  
  10.   Instance "hua", status READY, has 1 handler(s) for this service...  
  11. Service "HUAXDB" has 1 instance(s).  
  12.   Instance "hua", status READY, has 1 handler(s) for this service...  
  13. The command completed successfully
复制代码
通过浏览器去访问提示需要XFILES_USER or XFILES_ADMINISTRATOR,就赋权给xfiles
SQL> grant xfiles_user,xfiles_administrator to xfiles;

Grant succeeded.

如果是浏览器 ftp:\\localhost 如果不需要浏览器,cmd打开ftp 21端口 ftp 到里面的目录下就行了
FTP上传
FTP xfiles/xfiles
cd  相应目录
lcd c:\
binary
put client.xml
bye
TP 上传后 在xdb.resource_view和 xdb.PATH_VIEW 中查看已经上传的xml文件
select any_path from xdb.resource_view where any_path like '%client.xml';
ANY_PATH
-------------------------------------------------
/home/SCOTT/demonstrations/introduction/client.xml

在视图下xdb.resource_view res字段就有上传的文件
res字段是一个xmltype类型,大致结构如下,把content client字段内取出来就好了:
  1. resource_view视图 res字段存储格式
  2. <Resource xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd" Hidden="false" Invalid="false" Container="false" CustomRslv="false" VersionHistory="false" StickyRef="true" HierSchmResource="false" SizeAccurate="true" IsVersionable="true" IsCheckedOut="false" IsVersion="false" IsVCR="false" IsWorkspace="false" IsXMLIndexed="false" IsVersionHistory="false" HasUnresolvedLinks="false">
  3. <CreationDate>2014-07-02T02:17:09.222000</CreationDate>
  4. <ModificationDate>20140702T02:17:09.222000</ModificationDate>
  5. <DisplayName>client.xml</DisplayName>
  6. <Language>en-US</Language>
  7. <CharacterSet>UTF-8</CharacterSet>
  8. <ContentType>text/xml</ContentType>
  9. <RefCount>1</RefCount>
  10. <ACL>
  11.     <acl description="Private:All privileges to OWNER only and not accessible to others" xmlns="http://xmlns.oracle.com/xdb/acl.xsd" xmlns:dav="DAV:" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd" shared="true">
  12. <ace>
  13.     <grant>true</grant>
  14.     <principal>dav:owner</principal>
  15.     <privilege><all/></privilege>
  16. </ace>
  17.     </acl>
  18. </ACL>

  19. <ACLOID>B9C557EFB6E3407FAAB848CDCC809DB6</ACLOID>
  20. <Owner>SCOTT</Owner>
  21. <OwnerID>00000054</OwnerID>
  22. <Creator>SCOTT</Creator>
  23. <CreatorID>00000054</CreatorID>
  24. <LastModifier>SCOTT</LastModifier>
  25. <LastModifierID>00000054</LastModifierID>

  26. <Contents>
  27.     <client xmlns="" name="iphone" version="2.5.1.0" versiontype="0000">
  28.         <user account="18888888888">
  29.     <events count_date="2012-08-19">
  30.         <event network="WiFi" count="5" durations="20">time_reg</event>
  31.         <event network="WiFi" count="9">send_soundim</event>
  32.     </events>
  33.     <events count_date="2012-08-18">
  34.         <event network="WiFi" count="4">send_sys_expression</event>
  35.         <event network="WiFi" count="5">click_accessory</event>  
  36.     </events>
  37. </user >
  38. <user account=" noaccount">
  39.     <events count_date="2012-08-19">
  40.         <event network="CMCC3G" count="2">click_reg_next</event>
  41.     </events>
  42. </user >
  43. </client>

  44. </Contents>

  45. <XMLLob>3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D38223F3E20200D0A3C636C69656E
  46. 74206E616D653D226970686F6E65222076657273696F6E3D22322E352E312E30222076657273696F
  47. 6E747970653D2230303030223E20200D0A3C75736572206163636F756E743D223138383838383838
  48. 383838223E20200D0A202020203C6576656E747320636F756E745F646174653D22323031322D3038
  49. 2D3139223E20200D0A20202020202020203C6576656E74206E6574776F726B3D2257694669222063
  50. 6F756E743D223522206475726174696F6E733D223230223E74696D655F7265673C2F6576656E743E
  51. 20200D0A20202020202020203C6576656E74206E6574776F726B3D22576946692220636F756E743D
  52. 2239223E73656E645F736F756E64696D3C2F6576656E743E20200D0A202020203C2F6576656E7473
  53. 3E20200D0A202020203C6576656E747320636F756E745F646174653D22323031322D30382D313822
  54. 3E20200D0A20202020202020203C6576656E74206E6574776F726B3D22576946692220636F756E74
  55. 3D2234223E73656E645F7379735F65787072657373696F6E3C2F6576656E743E20200D0A20202020
  56. 202020203C6576656E74206E6574776F726B3D22576946692220636F756E743D2235223E636C6963
  57. 6B5F6163636573736F72793C2F6576656E743E2020200D0A202020203C2F6576656E74733E20200D
  58. 0A3C2F75736572203E20200D0A3C757365722061
  59. 63636F756E743D22206E6F6163636F756E74223E20200D0A202020203C6576656E747320636F756E
  60. 745F646174653D22323031322D30382D3139223E20200D0A20202020202020203C6576656E74206E
  61. 6574776F726B3D22434D434333472220636F756E743D2232223E636C69636B5F7265675F6E657874
  62. 3C2F6576656E743E20200D0A202020203C2F6576656E74733E20200D0A3C2F75736572203E20200D
  63. 0A3C2F636C69656E743E
  64. </XMLLob>
  65. <Flags>257</Flags>
  66. <ContentSize>718</ContentSize>
  67. </Resource>
复制代码




使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-4 22:35 | 显示全部楼层
我上传之后还是看不到文件:

230 XFILES logged in
ftp> dir
200 EPRT Command successful
150 ASCII Data Connection
drw-r--r--   2 SYS      oracle         0 NOV 03 06:08 OLAP_XDS
drw-r--r--   2 SYS      oracle         0 APR 09 15:22 home
drw-r--r--   2 SYS      oracle         0 NOV 03 06:08 olap_data_security
drw-r--r--   2 SYS      oracle         0 NOV 03 06:00 public
drw-r--r--   2 SYS      oracle         0 APR 09 15:22 sys
drw-r--r--   2 SYS      oracle         0 NOV 03 06:08 xds
226 ASCII Transfer Complete
ftp: 378 bytes received in 0.14Seconds 2.66Kbytes/sec.
ftp> cd home
250 CWD Command successful
ftp> dir
200 EPRT Command successful
150 ASCII Data Connection
226 ASCII Transfer Complete
ftp> binary
200  Type set to I.
ftp> put c:\temp\client.xml
200 EPRT Command successful
150 BIN Data Connection
550- Error Response
ORA-31050: Access denied
550 End Error Response
ftp: 757 bytes sent in 0.01Seconds 63.08Kbytes/sec.
ftp> bye
221 QUIT Goodbye.


select any_path from xdb.resource_view where lower(any_path) like '%client.xml';

no rows selected

使用道具 举报

回复
论坛徽章:
403
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2014-7-4 22:43 来自手机 | 显示全部楼层
newkid 发表于 2014-7-4 22:35
我上传之后还是看不到文件:

230 XFILES logged in

。put不能用路径名?

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-4 22:49 | 显示全部楼层
现在有了,原来home不让写,后来改传到public下面了。

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-4 22:55 | 显示全部楼层
但是res里面只能看到这个,SQL还是看不到数据,这是怎么回事呢?

<Resource xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd">
  <CreationDate>2014-07-04T14:49:12.867000</CreationDate>
  <ModificationDate>2014-07-04T14:49:12.867000</ModificationDate>
  <DisplayName>client.xml</DisplayName>
  <Language>en-US</Language>
  <CharacterSet>UTF-8</CharacterSet>
  <ContentType>text/xml</ContentType>
  <RefCount>1</RefCount>
</Resource>

使用道具 举报

回复
论坛徽章:
17
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-04 14:53:16马上加薪
日期:2014-12-18 01:09:30祖国65周年纪念徽章
日期:2014-09-27 08:49:22马上有房
日期:2014-07-16 11:59:32优秀写手
日期:2014-07-10 06:00:12马上加薪
日期:2014-04-20 23:04:51马上有对象
日期:2014-04-19 23:32:33马上有车
日期:2014-03-29 23:05:24问答徽章
日期:2014-01-17 15:19:03
 楼主| 发表于 2014-7-5 02:06 | 显示全部楼层
本帖最后由 AnddyHua 于 2014-7-5 02:26 编辑
newkid 发表于 2014-7-4 22:55
但是res里面只能看到这个,SQL还是看不到数据,这是怎么回事呢?
我这里直接可以看到了 set long 10000 尽量大
或者
SELECT XMLQuery('//client' PASSING res  RETURNING CONTENT) "PATH"
FROM xdb.resource_view where any_path like '%client.xml';
真不行,那就手动去建resource,语法类似
DECLARE
  ret BOOLEAN;
BEGIN
ret:=DBMS_XDB.createResource('/public/T1/testcase.txt','ORIGINAL text');
END;
/

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-5 02:29 | 显示全部楼层
这个查询能看到内容了:
SELECT XMLQuery('//client' PASSING res  RETURNING CONTENT) "PATH"
FROM xdb.resource_view where any_path like '%client.xml';   

但是楼顶你说返回120行的SQL, 我运行后没有任何数据返回。

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-7-5 02:32 | 显示全部楼层
我把 under_path 条件从WHERE去掉, 现在可以看到120行了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年9月21日~23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表