Forum » Programiranje » branje xml datoteke s SQL stavkom
branje xml datoteke s SQL stavkom
zlatko ::
Ima kdo kakšno idejo, s katerimi komponentami upravljati vsebino XML datoteke preko SQL poizvedb (SELECT, DELETE, UPDATE, INSERT ...).
Programski jezik je lahko c++ ali basic.
Predvidevam, da v operacijskem sistemu že obstajajo kakšne knjižnice, npr. DCOM-XML ima funkcije za delo z XML-om.
Vendar DCOM ne omogoča SQL povpraševanja po podatkih iz XML datoteke, ampak bere podatke v obliki entitet (vozlišč) znotraj strukture XML.
lp, Zlatko
Programski jezik je lahko c++ ali basic.
Predvidevam, da v operacijskem sistemu že obstajajo kakšne knjižnice, npr. DCOM-XML ima funkcije za delo z XML-om.
Vendar DCOM ne omogoča SQL povpraševanja po podatkih iz XML datoteke, ampak bere podatke v obliki entitet (vozlišč) znotraj strukture XML.
lp, Zlatko
kopernik ::
Zlatko:
Marsikatera baza omogoča izvoz in uvoz v/iz XML formata. Da bi pa kar SQL poizvedbe na XML fajlih delal ... ne vem. Problem je v strukturi - sql je namenjen relacijskim bazam, XML pa ima hierarhično strukturo. Obstaja poseben tip podatkovnih baz - objektne baze in nekatere mislim da imajo možnost delanja direktno z XML fajli. Vendar je tam princip upravljanja s podatki čisto drugačen ... če te zanima. Večina tega je napisanega v Javi in za Javo (no, tudi za C++ se najde marsikaj). Še en minus objektnih baz - počasnejše so od relacijskih.
Torej, obstaja veliko knjižnic za delo z XML-i, tudi take, ki ti XML-e avtomatsko preslikujejo v objekte (in obratno). Če ti hitrost ni toliko važna, lahko narediš marsikaj zanimivega. SQL nad XML-i pa lahko zaenkrat kar pozabiš ... vsaj na trgu zastonjskih rešitev.
noraguta:
xpath je namenjen samo branju xml fajlu in je daleč od SQL-a. Lahko kar pozabi na update, delete in insert. Tudi logika je popolnoma drugačna (že prej omenjena razlika med hierarhično in relacijsko strukturo podatkov).
Marsikatera baza omogoča izvoz in uvoz v/iz XML formata. Da bi pa kar SQL poizvedbe na XML fajlih delal ... ne vem. Problem je v strukturi - sql je namenjen relacijskim bazam, XML pa ima hierarhično strukturo. Obstaja poseben tip podatkovnih baz - objektne baze in nekatere mislim da imajo možnost delanja direktno z XML fajli. Vendar je tam princip upravljanja s podatki čisto drugačen ... če te zanima. Večina tega je napisanega v Javi in za Javo (no, tudi za C++ se najde marsikaj). Še en minus objektnih baz - počasnejše so od relacijskih.
Torej, obstaja veliko knjižnic za delo z XML-i, tudi take, ki ti XML-e avtomatsko preslikujejo v objekte (in obratno). Če ti hitrost ni toliko važna, lahko narediš marsikaj zanimivega. SQL nad XML-i pa lahko zaenkrat kar pozabiš ... vsaj na trgu zastonjskih rešitev.
noraguta:
xpath je namenjen samo branju xml fajlu in je daleč od SQL-a. Lahko kar pozabi na update, delete in insert. Tudi logika je popolnoma drugačna (že prej omenjena razlika med hierarhično in relacijsko strukturo podatkov).
Zgodovina sprememb…
- spremenil: kopernik ()
abadon ::
No ja, brez veze, vsekakor tudi take reči obstajajo ( čeprav mislim, da bi moderator moral nekoliko zbistriti svoje poglede na te, "računalniške" stvari, relacijske in hierarhične ... hm, hm... za začetek bi "sedla" stran W3C organizacije ); v principu potrebuješ le dodobra izdelano XML schemo ( glej na: tukaj ker "navaden" DTD ne zadošča - DTD vse tipe podatkov obdeluje kot alfanumerični niz, pri "schemi" pa jih lahko zelo natančno določiš )... pri ORACLU ( 9 ) ta miš maš ( datoteka .sql , sprožilna ( trigger ) funkcija... ipd) izgleda nekako takole:
SET ECHO ON
SET SERVEROUTPUT ON SIZE 100000
declare
CURSOR attractions_key IS
SELECT DISTINCT county_name
FROM attraction;
xmlref REF XMLType;
result BOOLEAN;
BEGIN
FOR key_rec IN attractions_key LOOP
SELECT MAKE_REF(attraction_xml, key_rec.county_name)
INTO xmlref
FROM dual;
result := DBMS_XDB.createResource(
'/ATTRACTIONS/' || key_rec.county_name || '.xml'
,xmlref);
END LOOP;
END;
/
COMMIT;
( več o tem na: tukaj ) - pri celi zadevi pa ne gre toliko za zastonkarske rešiteve, kot za tisto: TKO NEMA U GLAVI, IMA U DŽEPU - kajti vse orodje, ki ga človek potrebuje je NOTEPAD, zastonjkarska podatkovna baza ( recimo MySQL ) in pa Internet Explorer z vsaj MSXML 2.0 ( obstaja že luksuzna verzija 4, ki je pravtako zastonj tukaj ), ter dostop do interneta, znanje angleščine in računalništva, pa je...
SET ECHO ON
SET SERVEROUTPUT ON SIZE 100000
declare
CURSOR attractions_key IS
SELECT DISTINCT county_name
FROM attraction;
xmlref REF XMLType;
result BOOLEAN;
BEGIN
FOR key_rec IN attractions_key LOOP
SELECT MAKE_REF(attraction_xml, key_rec.county_name)
INTO xmlref
FROM dual;
result := DBMS_XDB.createResource(
'/ATTRACTIONS/' || key_rec.county_name || '.xml'
,xmlref);
END LOOP;
END;
/
COMMIT;
( več o tem na: tukaj ) - pri celi zadevi pa ne gre toliko za zastonkarske rešiteve, kot za tisto: TKO NEMA U GLAVI, IMA U DŽEPU - kajti vse orodje, ki ga človek potrebuje je NOTEPAD, zastonjkarska podatkovna baza ( recimo MySQL ) in pa Internet Explorer z vsaj MSXML 2.0 ( obstaja že luksuzna verzija 4, ki je pravtako zastonj tukaj ), ter dostop do interneta, znanje angleščine in računalništva, pa je...
Zgodovina sprememb…
- spremenilo: abadon ()
kopernik ::
Prosim te, če malo bolj natančno razložiš, kako bi z notepadom in mysql-om delal sql poizvedbe nad xml fajli (torej SELECT, UPDATE in INSERT stavki)? Razloži korak za korakom. Torej imam fajl oseba.xml, mysql bazo in sedaj bi rad napisal en update. Real time seveda, ne pa import v bazo, nato popravki tabel in export iz baze v fajl.
Za Oracle pa vem, da ima dobro podporo za XML (mi je ravno nekaj dni nazaj razlagal naš dba). In nisem trdil, da ne obstajajo. Preberi še enkrat moj post. Da se tudi sprogramirati en simple mapping med objekti in xml, toda to je tako počasno, da ti brada zraven zrase. Še posebej pri velikih količinah podatkov.
Za Oracle pa vem, da ima dobro podporo za XML (mi je ravno nekaj dni nazaj razlagal naš dba). In nisem trdil, da ne obstajajo. Preberi še enkrat moj post. Da se tudi sprogramirati en simple mapping med objekti in xml, toda to je tako počasno, da ti brada zraven zrase. Še posebej pri velikih količinah podatkov.
kopernik ::
Pa še to sem pozabil dodati, tisti tvoj trigger je daleč od ansi sql-92 standarda. S takim pristopom si narediš tak lock-in na bazo, da je potem ojoj, če je potrebno spremeniti bazo.
Zgodovina sprememb…
- spremenil: kopernik ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Baza podjetijOddelek: Loža | 4502 (3646) | M & M |
» | Ne-relacijska bazaOddelek: Programiranje | 4071 (2694) | mitjaR |
» | Java - uvoz XML in izvoz v MySQL pomočOddelek: Programiranje | 2909 (2246) | igor0203 |
» | [Delphi] Izbira podatkovne bazeOddelek: Programiranje | 2530 (1990) | zhigatsey |
» | uporabnost XMLOddelek: Programiranje | 2144 (1930) | matic |