如何将XML文件导入到数据库中去

如何将XML文件导入到数据库中去,第1张

var tmpquery2:tadoquery;

tmpfile:string;

tmptable:tadotable;

begin

if applicationMessageBox( '导入答案将会清空以前的考生答案,确定是否继续? ', '提醒 ',MB_OKCANCEL or MB_ICONWARNING)=mrok then

begin

IF BSopenExecute then

try

try

begin

tmpfile:=bsopenFileName;

tmptable:=tadotableCreate(self);

tmpquery2:=tadoqueryCreate (self);

tmpquery2Connection :=dmconnect ;

tmptableConnection :=dmconnect ;

tmptableTableName:= 'exam_answer ';

with tmpquery2 do

begin

close;

sqlClear;

sqlAdd( 'delete from exam_answer ');

execsql;

end;

tmptableLoadFromFile(tmpfile);

tmptableFirst;

while not tmptableEof do

begin

with tmpquery2 do

begin

close;

sqlClear;

sqlAdd( 'insert into exam_answer(kh,xm,sj_id,sjts,tk_id,stbh,tx,daa,dab,dac,dad,dae,daf,tkda,df) values(:kh,:xm,:sj_id,:sjts,:tk_id,:stbh,:tx,:daa,:dab,:dac,:dad,:dae,:daf,:tkda,:df) ');

parametersParamByName( 'kh ')Value :=tmptablefieldbyname( 'kh ')AsString;

parametersParamByName( 'xm ')Value :=tmptablefieldbyname( 'xm ')AsString;

parametersParamByName( 'sj_id ')Value :=tmptablefieldbyname( 'sj_id ')AsString;

parametersParamByName( 'tx ')Value :=tmptablefieldbyname( 'tx ')AsString;

parametersParamByName( 'sjts ')Value :=tmptablefieldbyname( 'sjts ')AsString;

parametersParamByName( 'tk_id ')Value :=tmptablefieldbyname( 'tk_id ')AsString;

parametersParamByName( 'stbh ')Value :=tmptablefieldbyname( 'stbh ')AsString;

parametersParamByName( 'daa ')Value :=tmptablefieldbyname( 'daa ')AsBoolean;

parametersParamByName( 'dab ')Value :=tmptablefieldbyname( 'dab ')asboolean;

parametersParamByName( 'dac ')Value :=tmptablefieldbyname( 'dac ')AsBoolean ;

parametersParamByName( 'dad ')Value :=tmptablefieldbyname( 'dad ')AsBoolean ;

parametersParamByName( 'dae ')Value :=tmptablefieldbyname( 'dae ')AsBoolean ;

parametersParamByName( 'daf ')Value :=tmptablefieldbyname( 'daf ')AsBoolean ;

parametersParamByName( 'tkda ')Value :=tmptablefieldbyname( 'tkda ')AsString;

parametersParamByName( 'df ')Value :=tmptablefieldbyname( 'df ')AsString;

execsql;

end;

tmptablenext;

end;

showmessage( '导入完成,累死了 ')

end;

finally

tmptableFree;

tmpquery2Free;

end;

except

showmessage( '导入未完成。:( ')

end;

end;

end;

如果单纯的LOAD出来,它是不直接写到后台数据表的。分析下源码就知道它LOAD之前先CLOSE了数据表。只有一条一条增加到后台数据表了。

-- 数据库用户名 UAGReport  表名student 已创建

use UAGReport

go  

DECLARE @doc varchar(1000)  

DECLARE @idoc int 

SET @doc='<ROOT>  

         <student>   

          <id>6</id>  

          <name>sun</name>  

          <sex>male</sex>  

           <age>24</age>  

           </student>  

          </ROOT>'  

  exec sp_xml_preparedocument @idoc output,@doc  

  select  from openxml(@idoc,'/ROOT/student',2)  

  with(id int,name varchar(40),sex varchar(20), age int)  

  insert student  

  select  from openxml(@idoc,'/ROOT/student',2)  

  with student  

  exec sp_xml_removedocument @idoc

实现思路:可以通过w3c的dom解析器进行 *** 作,之后通过getName获取到xmltpye中的属性值。

举例:

import javaioFile;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

public class DomTest1

{

public static void main(String[] args) throws Exception

{

// step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

// Systemoutprintln("class name: " + dbfgetClass()getName());

// step 2:获得具体的dom解析器

DocumentBuilder db = dbfnewDocumentBuilder();

// Systemoutprintln("class name: " + dbgetClass()getName());

// step3: 解析一个xml文档,获得Document对象(根结点)

Document document = dbparse(new File("candidatexml"));

NodeList list = documentgetElementsByTagName("PERSON");

for(int i = 0; i < listgetLength(); i++)

{

Element element = (Element)listitem(i);

String content = elementgetElementsByTagName("NAME")item(0)getFirstChild()getNodeValue();

Systemoutprintln("name:" + content);

Systemoutprintln("--------------------------------------");

}

}

}

以上就是关于如何将XML文件导入到数据库中去全部的内容,包括:如何将XML文件导入到数据库中去、SQL怎么提取字段中XML内容,并插入到 ​另外一张表、oracle数据库如何解析XML数据获取值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10190370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存