简体   繁体   中英

Extracting xml values from column and inserting them into another database

I have a database with a Blob column that contains XML files. I would like to retrieve the values ​​of XML tags stored in Blob in this database to detail them in their respective columns in another database.

So, how can I get the value of the x tag ( as shown in the SQL queries below ) and insert it into the x column of my other database?

在此处输入图片说明

SELECT id,

EXTRACTVALUE(Value(p), 'activites/categorieProjet/text()') As categorieProjet,
EXTRACTVALUE(Value(p), 'activites/coutParBeneficiaire/text()') As coutParBeneficiaire,
EXTRACTVALUE(Value(p), 'activites/etat/text()') As etat,
EXTRACTVALUE(Value(p), 'activites/idActivite/text()') As IdActivite,
EXTRACTVALUE(Value(p), 'activites/nbreDeBeneficiaires/text()') As nbreDeBeneficiaires,
EXTRACTVALUE(Value(p), 'activites/nbsession/text()') As nbsession,
EXTRACTVALUE(Value(p), 'activites/nom/text()') As nom,
EXTRACTVALUE(Value(p), 'activites/objectifSpecifique/text()') As objectifSpecifique,
EXTRACTVALUE(Value(p), 'activites/participation/text()') As participation,
EXTRACTVALUE(Value(p), 'activites/publicConcerne/text()') As publicConcerne,
EXTRACTVALUE(Value(p), 'activites/thematique/text()') As thematique,
EXTRACTVALUE(Value(p), 'activites/typeActivite/text()') As typeActivite,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[1]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[2]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[3]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[4]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[5]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[6]') As zoneGeographiques,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[7]') As zoneGeographiques
FROM
artpiece x,
TABLE(XMLSEQUENCE(
EXTRACT(XMLTYPE(blob2clob(x.blob_piece)),'/instructionAC/activites')
))p
   where rf_pieg  = 'PIEG0034';

hello everyone I found the solution to my problem if it can help someone :

> ** creation of new table
------------------------
create table TestSipac(
  categorieProjet          varchar2(100),
  coutParBeneficiaire      varchar2(100),
  etat                     varchar2(100),
  IdActivite               varchar2(100),
  nbreDeBeneficiaires      varchar2(100),
  nbsession                 varchar2(100),
  objectifSpecifique        varchar2(100),
  participation             varchar2(100),
  publicConcerne           varchar2(100),
  thematique               varchar2(100),
  typeActivite             varchar2(100),
  zoneGeographiques1        varchar2(100),
  zoneGeographiques2             varchar2(100),
  zoneGeographiques3           varchar2(100),
  zoneGeographiques4               varchar2(100),
  zoneGeographiques5             varchar2(100)
 )

***

DECLARE

  categorieProjet          varchar2(100);
  coutParBeneficiaire      varchar2(100);
  etat                     varchar2(100);
  IdActivite               varchar2(100);
  nbreDeBeneficiaires      varchar2(100);
  nbsession                 varchar2(100);
  objectifSpecifique        varchar2(300);
  participation             varchar2(100);
  publicConcerne           varchar2(100);
  thematique               varchar2(100);
  typeActivite             varchar2(100);
  zoneGeographiques1        varchar2(100);
  zoneGeographiques2             varchar2(100);
  zoneGeographiques3           varchar2(100);
  zoneGeographiques4               varchar2(100);
  zoneGeographiques5             varchar2(100);


BEGIN
for i in (select 
EXTRACTVALUE(Value(p), 'activites/categorieProjet/text()') As categorieProjet,
EXTRACTVALUE(Value(p), 'activites/coutParBeneficiaire/text()') As coutParBeneficiaire,
EXTRACTVALUE(Value(p), 'activites/etat/text()') As etat,
EXTRACTVALUE(Value(p), 'activites/idActivite/text()') As IdActivite,
EXTRACTVALUE(Value(p), 'activites/nbreDeBeneficiaires/text()') As nbreDeBeneficiaires,
EXTRACTVALUE(Value(p), 'activites/nbsession/text()') As nbsession,
EXTRACTVALUE(Value(p), 'activites/nom/text()') As nom,
EXTRACTVALUE(Value(p), 'activites/objectifSpecifique/text()') As objectifSpecifique,
EXTRACTVALUE(Value(p), 'activites/participation/text()') As participation,
EXTRACTVALUE(Value(p), 'activites/publicConcerne/text()') As publicConcerne,
EXTRACTVALUE(Value(p), 'activites/thematique/text()') As thematique,
EXTRACTVALUE(Value(p), 'activites/typeActivite/text()') As typeActivite,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[1]') As zoneGeographiques1,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[2]') As zoneGeographiques2,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[3]') As zoneGeographiques3,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[4]') As zoneGeographiques4,
EXTRACTVALUE(Value(p), 'activites/zoneGeographiques[5]') As zoneGeographiques5
FROM
artpiece x,
TABLE(XMLSEQUENCE(
EXTRACT(XMLTYPE(blob2clob(x.blob_piece)),'/instructionAC/activites')
))p
   where rf_pieg  = 'PIEG0034') loop
        insert into TestSipac(
        categorieProjet,
  coutParBeneficiaire,
  etat,
  IdActivite,
  nbreDeBeneficiaires,
  nbsession,
  objectifSpecifique,
  participation,
  publicConcerne,
  thematique,
  typeActivite,
  zoneGeographiques1,
  zoneGeographiques2,
  zoneGeographiques3,
  zoneGeographiques4,
  zoneGeographiques5)
       values ( i.categorieProjet,
  i.coutParBeneficiaire,
  i.etat,
  i.IdActivite,
  i.nbreDeBeneficiaires,
  i.nbsession,
  i.objectifSpecifique,
  i.participation,
  i.publicConcerne,
  i.thematique,
  i.typeActivite,
  i.zoneGeographiques1,
  i.zoneGeographiques2,
  i.zoneGeographiques3,
  i.zoneGeographiques4,
  i.zoneGeographiques5);
     end loop;
   end;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM