Adatkonvertálás XML formátumban sql SQLXML bulkload alkalmazási funkciókat a szerkezet

Ez a cikk részletesen leírja a funkcióját SQLXML Bulkload létrehozásával olyan alkalmazás, amely átalakítás a bemeneti XML adatok relációs táblák SQL Server. Mi is megpróbál választ adni a leggyakoribb kérdés, hogy akkor keletkezik, ha Bulkload funkciókat használják vállalati alkalmazások. Különösen megbeszéljük a következő témákban:

  • Átalakítás komplex XML hierarchiák egy táblázatban.
  • Alkalmazás Bulkload funkció egy .NET alkalmazást.
  • Segítségével Áramlat osztály bemeneti adatokat Bulkload mechanizmus funkciók .NET.

Célkitűzés: megőrizni a tartalmát RSS-csatornák az SQL Server

Ebben a cikkben bemutatjuk létrehozása az alkalmazás adatokat fogad via RSS technológia (Really Simple Syndication) és fenntartják a jogot egy relációs adatbázis. RSS - XML ​​formátumot használják a szállítás híreket és egyéb információkat az adatok több forrásból. A megoldás erre a problémára Két szempontot. Először is, szükségünk van egy mechanizmus átalakításával a bemeneti XML adatok relációs táblák és oszlopok. Az XML formátum előre meghatározott, és nem kell, hogy az adatbázis minden információt kapott a csatorna. Másodszor, hogy végre kell hajtani az átadás a bemenő adatok közvetlenül a szerveren. Ezeket a problémákat a segítségével a konverziós áramkör és Bulkload funkció SQLXML.

Ez a probléma jellemző az üzleti rendszerek, ahol a bemeneti adatok képviseli formájában az XML, valamint a kiszolgáló verziótárra relációs adatbázis. A forrás az XML-adatok bevitele lehet a webes szolgáltatás, az XML-üzeneteket más külső üzleti partnerek, vagy források a vállalaton belül.

Rövid bevezetés a jegyzetekkel ellátott áramkör SQLXML

XSD séma gyakran használják, hogy leírja a tartalmát és szerkezetét az XML-adatokat, ezért lehet létrehozni XSD-diagram, amely leírja a szerkezet RSS-csatornákat. A mi alkalmazás, akkor nem hoz létre XSD-rendszer közös RSS-csatornákat, és középpontjában egy részhalmaza az XML struktúra, melyet a legtöbb csatornán. Használt csatorna az írás ezt a cikket, amely a Yahoo! Hírek RSS feed (EN). Meg kell rávezeti a XSD-séma relációs metaadatok, amelyeket a SQLXML átalakítani egy XML-kódot relációs adatbázis formátumban. Nézze meg a jegyzetekkel használt sémát alkalmazás.

1. listán magyarázatokkal ellátott rendszert használják a kérelem

XSD-áramkör tartalmaz a fenti relációs annotáció szükséges adatok átalakítása. Minden kommentárok átalakítás kapcsolatos SQLXML tartoznak a tér nevét xmlns: sql = „urn: sémák-microsoft-com: mapping-séma”. A legfontosabbak absztrakt sql: kapcsolatban tétel elem, és a különböző jelölések sql: mezőben kapcsolatos gyermekeire. Abstract sql: kapcsolatban tétel alakítja a hírszolgáltatás asztal és absztrakt sql: a területen - az átalakulás a gyermek elemek az oszlopok a táblázatban. Elem attribútumok is átalakítható tábla oszlopokat. Valójában absztrakt sql: mező kitöltése nem kötelező, mivel a leképezés „tábla elem” magában foglalja az összes gyermek elemek és attribútumok az elem. Az XSD-rendszer felett csak olyan elemeket isPermaLink pubDate és feltéve megjegyzéssel sql: a téren, mert a nevek eltérőek az egyes oszlopokat. Ahhoz, hogy a nevét a többi elemét a standard átváltási szabályok vonatkoznak: ezek automatikusan konvertálja az oszlopokat.

Ugyanakkor, az RSS-csatorna számos egyéb elemek, mint például a csatorna, ttl és a kép, ami ebben az esetben nem szükséges átalakítani, hogy egy relációs adatbázis formátumban. Hogy oldja meg ezt a problémát, akkor a SQLXML sql kommentár: a konstans vagy sql: leképezve.

Abstract sql: a konstans elsősorban létrehozásához használt csomagolóanyagok, elemek, amelyek nem szerepelnek az adatbázisban. Ebben az esetben az elemek RSS és a csatorna olyan elemek, burkolóanyagok az RSS-csatorna, így használható absztrakt sql: van-állandó. Ha kommentárok sql: van-állandó kell, hogy vegye figyelembe a következőket. Először is, ez lehet alkalmazni csak az elemek a komplex típusú. Másodszor, ha az állandó (konstans) elem attribútumai, ezek a tulajdonságok nem lehet átalakítani, hogy az adatbázisban oszlopokat.

Abstract sql: térképezni segítségével határozza meg kifejezetten, hogy egy elem vagy attribútum nem kell alakítani bármely tárgy egy relációs adatbázis. Ez magyarázat többször használják az áramkörben. Már jelölt verzió attribútum kommentár sql: leképezve = „false” kifejezetten azért, mert ez része állandó tagja. Azt is jegyzetekkel segítségével az SQL: leképezett = „false” minden gyermek a csatorna, egy egyszerű típus. Ez magyarázat is használom a kép elem. Meg kell jegyezni, hogy a kép - egy eleme a komplex típusú, tehát, jegyzetekkel, azt megakadályozta az átalakulás ez az elem, és minden gyermek elemeket és attribútumokat. Annotation SQL: leképezett lehet használni egyszerű elemeket, és hogy elemei a komplex típusú. Az utóbbi esetben, az összes gyermek elemek és attribútumok szerepelnek a komplex típusú, és a kapott értéket sql kommentár: leképezve.

Az előnye, hogy az átalakító áramkör feltérképezésére bemenő XML-adatok egy adatbázisban, hogy egy és ugyanaz a leképezés lehet lekérdezni az adatbázisból, és ezáltal az egyes XML-adatok ábrázolása. Ezekre a célokra, feltéve SQLXML XPath funkciót.

Használata Bulkload a menedzselt kód

SQLXML Bulkload funkció lehetővé teszi, hogy töltse be a bemenő XML-adatok relációs adatbázisban. Ez a funkció a folyamat SQL Server BCP a legjobb mechanizmus terhelés nagy mennyiségű XML-bemeneti adatok a szerverre. A funkció megvalósítása egy COM-objektumot, és használja a SQLOLEDB szolgáltatók. Ennek köszönhetően célszerű használni, ha a programozás útján ActiveX Data Objects (ADO), és amikor a script nyelvek, mint a VBScript. Esetünkben Bulkload funkció használható egy .NET alkalmazást. Ahhoz, hogy ezt a funkciót, akkor használja az alábbi módszerek egyikét:

  • használja tlbimp.exe programot (EN). importálni COM típus definíció a runtime-szerelvényt, majd adja hozzá az előállított együttműködéshez-szerelvényt a projektben;
  • Add Visual Studio.NET projekt kapcsolatot közvetlenül a könyvtárba DDL Bulkload (xblkld3.dll). Ez létrehoz együttműködéshez-összeállítás, amely felhasználható a projektben.

Elvégzése után bármely eljárás használatban Bulkload nem nehéz:

2. lista használata Bulkload

Töltse az adatbázisban SQLXML Bulkload

Fogok bemutatni két módon lehet megoldani ezt a problémát. Mindkét esetben azt használja UCOMIStream interfész (EN). amely hajtott meghatározása istream_FAR felület. Az első kiviteli alaknál vonatkozik objektum-áramlási hüvelyt, amely megvalósítja UCOMIStream interfész. Az alábbiakban egy példát ezen a felületen:

3. lista objektum-áramlási hüvelyt, amely megvalósítja az interfészt UCOMIStream

Mint látható a fenti kódrészlet nem teljes körű végrehajtása UCOMIStream felület. Mert Bulkload funkciók végrehajtásához szükséges csak az alábbi módszerekkel: olvasás, írás, Stat és kérjen. Akkor át egy osztály UCOMStreamWrapper közvetlenül Execute eljárás Bulkload. A fenti oldatot egy hatékony módja annak, hogy továbbítja streaming adatokat Bulkload funkciónak egy .NET alkalmazást.

Az alábbi alternatív megoldás, amely nem igényel interfész megvalósítása UCOMIStream.

4. lista Solutions, amely nem igényel interfész megvalósítása UCOMIStream

A hátránya ennek a megoldásnak, hogy ez nem egy nagyon hatékony módon továbbítja folyamok Bulkload funkciót. A probléma az, hogy az CreateStreamOnHGlobal funkciót, amely gyorsítótáraz adatokat a memóriába, és okoz a termelékenység csökkenését.

A letölthető kódot ezt a cikket, vannak az egyes mintákat a fenti megoldások formájában az egyes projekteket.

Fontos megjegyezni, hogy ha az ADO vagy script nyelv, akkor közvetlenül utalja át az áramlás ADODB.Stream Bulkload funkciót. A dokumentáció példát áramlását SQLXML átviteli VBScript környezetben.

Object Model Bulkload

Bulkload objektum modell számos olyan funkciót tartalmaz, amely további rugalmasságot és funkcionalitást. Régebben a tulajdonságok és ErrorLogFile KeepIdentity. Ha meg van adva ErrorLogFile tulajdon Bulkload funkció a feldolgozás jelentkezzen az esetleges hibákat a megfelelő iratokkal. KeepIdentity tulajdonság beállítani az azonosító oszlopokat. A mi alkalmazás, az azonosító oszlopot azonosították és ha az ingatlan KeepIdentity értéke hamis, Bulkload értékeit használja az azonosító által generált SQL Server. Kell használni annak érdekében, hogy azonosítsa az adatok forrását, meg ingatlan KeepIdentity értéke igaz (ez az alapértelmezett).

SchemaGen - egy másik érdekes tulajdonsága, hogy nem használják a jelentkezésemet, de nagyon hasznos lehet. Ezt fel lehet használni, hogy létrehoz szerver oldali táblák az adatbázisban kezdete előtt az indítási folyamatot. Bulkload használ nevei elemek és attribútumok, valamint információt a XSD-típusú áramkörök generálására vonatkozó táblák és oszlopok. SchemaGen ingatlan teremt korlátozás asztalok, de ha a tulajdonságok SGUseID értéke igaz, és az elsődleges kulcs meghatározott típusú XSD ID, ez az információ előállításához használt elsődleges kulcs. Ez a funkció is használja az összehasonlítás kommentár sql: kapcsolat létrehozásához idegen kulcs kényszerek. További információt a használt tulajdonságok bulkload lásd. A dokumentáció tartalmazza a szállítás az SQLXML.

következtetés

Ebben a cikkben, azt mutatta, hogyan kell használni a funkciót Bulkload SQLXML feltölti az adatbázist bemeneti XML formátumban. Relációs adatok ezután könnyen lekérdezhető technológiák, mint például az ADO.NET, amint azt az alkalmazást, amely letölthető. Bulkload funkció használható keresztül ADO hagyományos eszközökkel, és a programozási nyelv alkalmazásokat. Azt is fel lehet használni a NET segítségével COM-együttműködéshez mechanizmus. A cikk rugalmasságot mutattak átalakítani az XML egy egyszerű hierarchia komplex adatbázis sémát az átalakítás áramkör.

Kapcsolódó cikkek