Benutzer mit den meisten Antworten
Bulk Insert macht mich Wahnsinnig...

Frage
-
Hallo zusammen,
ich muss täglich 25 Dateien in eine SQL 2012 Express DB einlesen.
Seit 3 Tagen verzweifliche ich an diversen Schema.ini & Format.fmt Anleitungen.
Das Problem ist, das in manchen feldern "Doublequotes" enthalten sind und in anderen nicht...
Die Doublequotes sind auch nur dort gesetzt, wenn im Text ein Komma enthalten ist, logisch sonst würde ja am Komma getrennt.
Beispiel:
Spalte1,Spalte2,Spalte3,Spalte4,Spalte5
Text,Text,Text,Text,Text
Text,"text,mit,Kommas",Text,Text,Text
Text,Text,"text,mit,Kommas",Text,Text
Text,Text,Text,"text,mit,Kommas",Text
Wenn ich die FMT Anleitung richtig interpretiere, müsste meine FMT wie folgt aussehen:
10.0
5
1 SQLCHAR 0 255 ",\"" 1 Spalte1 Latin1_General_CI_AS
2 SQLCHAR 0 255 "\",\" 2 Spalte2 Latin1_General_CI_AS
3 SQLCHAR 0 255 "\",\" 3 Spalte3 Latin1_General_CI_AS
4 SQLCHAR 0 255 "\",\" 4 Spalte4 Latin1_General_CI_AS
5 SQLCHAR 0 255 "\",\r\n" 5 Spalte5 Latin1_General_CI_AS
Mein SQL Befehl sieht wie folgt aus:
BULK INSERT dbo.tabelle FROM 'Datendatei.csv'
with
(
FIRSTROW = 2,
FORMATFILE='Formatdatei.fmt'
)
Ich würde mich freuen wenn mir hierbei jemand behilflich sein könnte.
Danke & vG
Dietmar
- Bearbeitet ExXoN0282 Samstag, 12. September 2015 00:00
Antworten
-
Hallo Dietmar,
wenn überhaupt dürfte es am SSMS liegen und das Speichern des Import Assistenten sollte bei der Vollversion am Ende möglich sein - notfalls dafür eine Vollversion / Developer nehmen. dtsexec wiederum ist bei Express mit Advanced Services dabei.
Nur mit dem SQL Server Agenten wird es nichts, aber man kann solche Pakete auch über den Windows Aufgaben Dienst ausführen: Erstelle eine Batchdatei mit den dtsexec-Aufrufen.
Gruß Elmar
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 16. September 2015 11:22
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. September 2015 11:33
Alle Antworten
-
Hi,
die Formatanweisungen sollten für jede Spalte in einer Zeile stehen. Ob die wechselnden Darstellungen der Zeichenketten (mit und ohne Gänsefüßchen) ein Problem sein wird, kann ich jetzt nicht prüfen. Falsch ist jedoch in Deiner Formatdatei das abschließende \" in den Spalten 2, 3 und 4.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Samstag, 12. September 2015 06:33
-
Hallo Dietmar,
mit BULK INSERT / bcp wirst Du das nicht hinbekommen. Denn dort gilt bei den Trennzeichen entweder immer oder gar nicht. Eine SCHEMA.INI kennt es genauso wenig; das ist eine Spezialität des Access Text Treibers.
Das einfachste / sicherste wäre ein SSIS Paket zu erstellen. Gibst Du für eine Flatfile-Datenquelle als Trenner das Komma und als Text-Qualifizierer doppelte Anführungsstriche an so funktioniert das auch, wenn letztere optional sind.
Für das automatisierte Importieren kannst Du dtsexec verwenden - z. B. in Verbindung mit dem SQL Server Agenten.
Gruß Elmar
-
Guten Morgen Peter,
Danke für die schnelle Antwort!
Die Zeilenumbrücke der FMT kommen nur hier im Forum vor, steht natürlich pro Spalte alles in einer Zeile ;)
Wenn das was Elmar schreib zutrifft, dann kann ich das mit dem Bulk Import ohnehin abhaken und muss das mit dem SSIS Paket versuchen.
Danke & vG
Dietmar
-
-
-
Hallo Dietmar,
wenn überhaupt dürfte es am SSMS liegen und das Speichern des Import Assistenten sollte bei der Vollversion am Ende möglich sein - notfalls dafür eine Vollversion / Developer nehmen. dtsexec wiederum ist bei Express mit Advanced Services dabei.
Nur mit dem SQL Server Agenten wird es nichts, aber man kann solche Pakete auch über den Windows Aufgaben Dienst ausführen: Erstelle eine Batchdatei mit den dtsexec-Aufrufen.
Gruß Elmar
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 16. September 2015 11:22
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. September 2015 11:33