各位有什么好办法从XML文件导数据到数据库?

o_dog 2004-04-30 11:38:29
<P>
<B>
<G>894730147</G>
<Gl>Electronic Components</Gl>
</B>
<C>Manufacturer</C>
</P>

搜索了一下,看到下面两种办法,但觉得还是不够好,希望大家能帮忙想点好办法
(1)用SQL建立临时表,读取XML内容进去,再用变量读出处理。这种方法对特别大的XML文档好象不能使用,因为不知用什么类型的变量去读,另外如果要把上面的数据都放入一个表里也不太方便。

(2)用程序一个个去抓取,这好象效率不够高。
...全文
183 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsclub 2004-08-19
  • 打赏
  • 举报
回复
使用ADO.NET吧
yu_shi_bin 2004-08-18
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
http://www.cstc.net.cn/docs/docs.php?id=241
o_dog 2004-05-12
  • 打赏
  • 举报
回复
这个星期做完项目就结贴啦,大家还有什么想法赶快提出来呀。
tkss 2004-05-12
  • 打赏
  • 举报
回复
mark!
Laone 2004-05-11
  • 打赏
  • 举报
回复
用xsl把各节点格式成sql语句,然后执行
sql的格式这样:
insert your table select **,**,**
union select **,**
bflovesnow 2004-05-11
  • 打赏
  • 举报
回复
mark
o_dog 2004-05-11
  • 打赏
  • 举报
回复
TO yizia:我不知道客户的XML是从哪里得来的,也没办法让人家改呀,只好自己去就着别人的文档来导数了。

Laone(Laone) 的方法在记录多的时候SQL语句就会变得好长哦

现在对结果还算满意,就是在OPENXML中把XPATH与字段一一对应弄得好麻烦。
brotherq 2004-05-11
  • 打赏
  • 举报
回复
要注意XML内容大小受http的Request限制,一般默认为4096K,如要传递大数据量,需将webService的Web.config文件中httpRuntime的maxRequestLength值改大。
椅子 2004-05-11
  • 打赏
  • 举报
回复
要是一个表你就写程序吧;
多个表的话,我有程序,不过在xml里保存了数据库结构包括表名、字段名、数据库类型和长度;
唉,xml本可是一个规范,没想到最后,从这里到那里,从那里到这里还是一团糟阿。问题就出在dtd。当初设计的时候既然决定了xml2sqlserver,那么就应该看看sqlserver生成的xml是什么样子吧?

后期修改工作的确不好做,再想想办法。
o_dog 2004-05-10
  • 打赏
  • 举报
回复
可是DTD是别人定的,XML文件也是别人给的,我只能顺着别人的路来导数呀:-(

昨天试了一下SQLXML,那个COM组件功能很少,而且对DTD的规范要求较严,老说我的DTD文件不符合。

最后是做了存储过程,把XML内容当作参数(TEXT数据类型)传入SQL去执行OPENXML,速度还算可以,不过做得挺麻烦的。希望还能找到更好的办法
椅子 2004-05-09
  • 打赏
  • 举报
回复
这是因为你的xml文件的dtd是自己建立的,所以你要符合sqlserver的标准就必需自己写程序;
我是这么作的,在生成xml的时候我都是符合ado2.7标准的,导入到数据库的时候用ado打开xml,然后调用结果集recordset的save就完成了。
brotherq 2004-05-08
  • 打赏
  • 举报
回复
推荐一本书:《SQL SERVER 2000与XML数据库编程》(清华大学出版社),书中有现成的例子,只是该书没有提供光盘,书中提示说可以从下述网站下载例子:http://www.microsoft.com/mspress/books/sampchap/6137a.asp,你去试试.
o_dog 2004-05-08
  • 打赏
  • 举报
回复
哦?不用建WEB服务?刚下载了一个SQLXML,试试再说。Q哥有没有什么实例让我偷偷懒?
myxs 2004-05-08
  • 打赏
  • 举报
回复
同意brotherq(Q哥)
brotherq 2004-05-07
  • 打赏
  • 举报
回复
SQLXML1.0以及后版本提供了一个可编程的COM组件,即XML Bulk Load(大容量装载组件)。可以用这个组件将大体积的XML数据导入到SQL SERVER表中。而且它不一定建WEB服务,任何支持COM的编程环境都可以使用XML Bulk Load组件。
o_dog 2004-05-06
  • 打赏
  • 举报
回复
谢谢几位的帮忙,不过问题还是没找到答案,

to rootcn(路在何方脚下): 目的地是SQL SERVER,导为EXCEL文件再处理似乎影响效率吧

to hewei2003() :能否说明白点,谢谢

to brotherq(Q哥):用SQLXML还要建WEB服务吗?恐怕没时间了,OPENXML是很有帮助,可是不知如何高效率地把大体积的XML数据读入SQL
brotherq 2004-05-01
  • 打赏
  • 举报
回复
用openxml或sqlxml可以直接将xml数据倒入到sql server数据库中,具体用法不详述,你可以在网上搜索关键词“openxml”和“sqlxml”,定有所获。
hewei2003 2004-04-30
  • 打赏
  • 举报
回复
用数据库函数处理要快些
hewei2003 2004-04-30
  • 打赏
  • 举报
回复
把整个XML的内容存入表的一个字段,然后处理,但不用变量读出。
Email:cqhw2003@126.com
加载更多回复(2)

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧