Import von XML Datei in SQL Server ist zu langsam
die Aufgabe, die ich erreichen möchte, ist die import-XML-Datei in SQL Server. Einmal bereiten Sie den leeren Tisch, ich würde das laden der gesamten xml-Datei und füllen Sie diese Tabelle. Googeln habe ich herausgefunden, dass SQL Bulk Insert ist geeignet, so getestet habe ich folgenden code, die gut läuft:
INSERT INTO Products (sku, product_desc)
SELECT X.product.query('SKU').value('.', 'INT'),
X.product.query('Desc').value('.', 'VARCHAR(30)')
FROM (
SELECT CAST(x AS XML)
FROM OPENROWSET(
BULK 'C:\Products.xml',
SINGLE_BLOB) AS T(x)
) AS T(x)
CROSS APPLY x.nodes('Products/Product') AS X(product);
Meine XML-Datei zu zählen um 1860 Knoten (30kb), ziemlich klein, aber die oben beschriebene Prozedur dauert über 5 Minuten, um den import der gesamten Datei. Gibt es irgendeine chance, spee bis dieser Prozess?
Ich habe auch gelesen, dass SQL Server 2008 einen Fehler haben, welche einen Einfluss auf die bulk-Objekt.
Irgendwelche Tipps?
- Sie sind besser dran, das Parsen von XML in C# oder einer anderen Sprache, und importieren Sie Sie über eine Anwendung.
- Ja, du hast Recht. Den ersten Versuch war das importieren von xml-Daten mithilfe von C#, aber ich dachte, dass Bulk-Prozeduren von SQL Server wurden mehr zuverlässig
- Gut, XML-und relationalen Datenbanken... nicht in der Regel eine gute Passform.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese - ich importiert eine Datei mit 4'096 Aufzeichnungen von der Festplatte in nur 53 Sekunden (auf einer regelmäßigen durchschnittlichen desktop-Rechner - keine high-perf server):
13000 Datensätze in 2 Sekunden
SQL Server 2008 R2. Datenbank-Kompatibilität 100
Und auch versuchen, die Datenbank-Kompatibilität 90