2016-06-07 9 views
0

Ich habe eine gespeicherte Prozedur, die eine große Ergebnismenge (fast 20 Millionen Datensätze) zurückgibt. Ich muss dieses Ergebnis in mehreren XML-Dateien speichern. Ich verwende derzeit ADO.Net, um ein Dataset zu füllen, aber es löst System.OutOfMemoryException schnell aus. Welche anderen Methoden kann ich verwenden, um dies zu erreichen?Speichern Sie große Ergebnismenge auf mehrere XML-Dateien

+2

eine XML-Bibliothek verwenden, die streamen. z.B. spucke xml aus, ohne dass die gesamte Datenstruktur im Speicher/verfügbar sein muss. lese einen Datensatz, spucke ein xml dieses Datensatzes aus, wiederhole es. –

+0

@Marc: Ich folge deiner Idee nicht ganz. Hast du ein Beispiel? Ich versuche gerade "For XML PATH" und es bringt das Ergebnis zu einem riesigen XML. Ich suche nach einer Möglichkeit, dies in mehrere XML-Datensätze zu teilen, die ich in XML-Dateien schreiben kann. –

+1

Anstatt ein 'DataSet' zu füllen, können Sie einen geeigneten [' DataReader'] (https://msdn.microsoft.com/en-us/library/haa3afyz.aspx) erhalten und von diesem in eine Datei streamen, indem Sie '' verwenden XmlWriter? – dbc

Antwort

1

Verwenden Sie SQL Server?

In diesem Fall gibt es eine SQL-Anweisung zum automatischen Konvertieren des Ergebnisses einer Abfrage in eine XML-Struktur, die Sie dann als String in der Anwendung erhalten würden.

Optionen:

  • spalten Sie die Zeichenfolge in mehr und sie in Dateien speichern (in der App)

  • PS modifizieren führen in mehr XML-Objekte zu spalten sie dann als verschiedene Saiten bekommen/row (1 Zeile => 1 Objekt) und speichere jede Datei in eine Datei.

  • schreiben eine neue PS, der die ursprüngliche PS, Split Ergebnis in X XML-Objekte aufruft, dann X XML-Strings zurückgibt, die Sie gerade in der Anwendung speichern haben

SQL Server verwenden?

die XML in der PS-Formatierung tun oder schreiben Sie eine neue, die es

Wie auch immer der Fall ist, denken, wenn es einfacher sein wird, die XML-Formatierung Serverseite

Verwandte Themen