Select for xml

21/02/2008 - 23:40 von Michael | Report spam
Hallo zusammen,

folgende aufgabestellung:
Ich möchte den Inhalt aus einer Tabelle lesen und das kommplet in ein xml
file auf meiner Festplatte ablegen.
Sqlanweisung: select * from tabellexy for xml raw, ROOT('Start'), BINARY
BASE64
Das ganze hole ich dann mir dann mit einem sqlDataReader
SqlDataReader reader = command.ExecuteReader();

in reader[0] ist nun der komplette inhalt.

1.) Problem
Die Tabelle hat auch binàren inhalt (bilder). Mir gelingt es nicht das nun
komplett in einer korrekten XML datei auf meiner Festplatte abzulegem
Irgendwie wird das abgeschnitten.

2.) Problem
Der Wurzelknoten <Start> wird nur ans Ende gebaut am Anfang fehlt er.

Wenn ich mir das ganze direkt vie SQL Server Management Studio anschau
sieht das aber gut aus.

Wo is mein Problem?
Wie bekomme ich den kompletten Export?
Ich muss das auch wieder aus der xmldatei ind die Tabelle zurück laden
können.

Bessere Ideen als mit select for xml arbeiten?
Interessant sind aber nur Ideen die hochperformant sind.

Umgebung:
SQL 2005 , CS 2005 NET 2.0

Dank und Gruss
Michael
 

Lesen sie die antworten

#1 Christoph Ingenhaag
22/02/2008 - 10:00 | Warnen spam
"Michael" wrote:


Hallo zusammen,

folgende aufgabestellung:
Ich möchte den Inhalt aus einer Tabelle lesen und das kommplet in ein xml
file auf meiner Festplatte ablegen.
Sqlanweisung: select * from tabellexy for xml raw, ROOT('Start'), BINARY
BASE64
Das ganze hole ich dann mir dann mit einem sqlDataReader
SqlDataReader reader = command.ExecuteReader();

in reader[0] ist nun der komplette inhalt.

1.) Problem
Die Tabelle hat auch binàren inhalt (bilder). Mir gelingt es nicht das nun
komplett in einer korrekten XML datei auf meiner Festplatte abzulegem
Irgendwie wird das abgeschnitten.

2.) Problem
Der Wurzelknoten <Start> wird nur ans Ende gebaut am Anfang fehlt er.

Wenn ich mir das ganze direkt vie SQL Server Management Studio anschau
sieht das aber gut aus.

Wo is mein Problem?
Wie bekomme ich den kompletten Export?
Ich muss das auch wieder aus der xmldatei ind die Tabelle zurück laden
können.

Bessere Ideen als mit select for xml arbeiten?
Interessant sind aber nur Ideen die hochperformant sind.

Umgebung:
SQL 2005 , CS 2005 NET 2.0

Dank und Gruss
Michael



Hallo Michael,

probier mal das aus:

;with ixemel (Col) as --ggf. das Semikolon entfernen
(
select *
from MyContacts for xml raw, ROOT('Start'), BINARY BASE64
)
select
cast(Col as nvarchar(max))
from ixemel

Vg
Christoph

Ähnliche fragen