XML文件导入SQL数据库的问题
将XML文件导入到数据库,用
DECLARE @doc varchar(8000)
DECLARE @hDoc int
EXEC sp_xml_preparedocument @hDoc OUTPUT, @doc
INSERT INTO Employee
SELECT *
FROM OPENXML(@hDoc, '/Employee')
WITH Employee
EXEC sp_xml_removedocument @hDoc
导入有几个问题:
1.可不可以直接关联XML文件而不用转换为varchar(8000)?用bulk insert将XML文件内容导入到一个临时表,再转为字符串,在这个过程中,花的时间也较多,而且试了几次,明明XML文件没有错误,用SQLXML组件可以导得进,但老是提示不正确。
2.对XML文件的大小或数据量有没有限制?我们要导数据的XML文件有上百M左右
3.与用SQLXML组件相比,在速度上哪个快?(同时SQLXML组件对文件大小没限制)
问题点数:100、回复次数:3Top
1 楼zjcxc(邹建)回复于 2006-06-03 20:37:24 得分 0
sql 2000要直接用sql语句处理的话, 似乎只有bcp/bulk insert好用, 由于2000最大支持8000字节的变量, 因此对导入的文件当然有限制, 不能大于8000字节.
至于导入后, xml不正确的问题, 可能是导入时被截断了(不支持超过8000的嘛), 另一个问题可能是xml文件中的一些字符被当成列分隔符了, 这样导致导入的数据错乱了
几百M的文件直接用sql处理不了
能够处理的方法是使用存储过程, 定义ntext 参数, 然后程序读取xml数据传递给存储过程, 由于ntext支持2G字节的数据, 所以能够处理上百M的文件.
效率上不好说, 看你做什么处理, 不过, 几百M的文件集中在sql服务器上处理, 网络会受到考验, 服务器的负载也会特别重.
建议还是程序处理.Top
2 楼zjcxc(邹建)回复于 2006-06-03 20:40:53 得分 0
sql2005对xml的支持十分好, 在sql 2005中, 用类似下面的方法就可以读取xml文件了, 而且结果直接是xml数据类型, 可以做各种处理
SELECT CAST(Info as xml)
FROM OPENROWSET(BULK 'C:\a.xml', SINGLE_BLOB)A(Info)Top
3 楼dengql()回复于 2006-06-04 16:49:56 得分 0
谢谢!Top




