Benutzer mit den meisten Antworten
BULK INSERT Drei-geteiltes CSV File

Frage
-
Hallo Zusammen,
wie ich mit Hilfe von BULK INSERT und einer Formatdatei ein CSV File importieren kann, habe ich mittlerweile ganz gut raus.
Auch kann ich mit FIRSTROW bestimmen, dass die ersten Zeilen der Datei, die leider ein anderes Format aufweisen, übersprungen werden.
Jetzt habe ich aber noch das Problem, dass nach den eigentlichen Daten nach einer Leerzeile noch Summendaten für das File kommen, die ich nicht haben will.
Wie kann ich diese vom Import ausschließen?
Das CSV File baut sich wie folgt auf:
Zeile 1: 34 Spalten
Zeile 2: leer
Zeile 3 - x : 22 Spalten
Zeile x+1: Leerzeile
Zeile x+1 bis x+y: = 7 Spalten
Mich interessieren die Spalten 3 bis x
Wie kann ich festlegen, dass der Import nach der zweiten leeren Zeile, bzw. wenn ich FIRSTROW = 3 setze, nach der ersten leeren Zeile beendet ist? Ich müsste wohl vor dem Import herausfinden, welche Spaltennummer die zweite leere Zeile hat. Dann kann ich BULK IMPORT sagen importiere Zeile 3-x. Aber wie kann ich das rausfinden?
Vielen Dank für die Hilfe
Patrick
Antworten
-
Hallo Zusammen,
ich habe das jetzt so gelöst, dass ich die Datei je Zeile als ein Datenfeld formatiere und dann über vba darin nach leeren Zeilen suche.
Viele Grüße
Patrick
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 20. Februar 2015 12:41
Alle Antworten
-
Hallo Patrick,
sowas ist keine CSV Datei, sondern irgendwas individuell (mit sehr schlechtem Aufbau) erstelltes, was nur seiner eigenen Konvention folgt.
Du solltest daher im Vorfeld die Datei mit einem geeigneten Tool (bspw. einer kleinen .NET Anwendung oder einem VBScript, ...) auslesen, die passenden Inhalte suchen und dann zwei oder drei Dateien draus machen, die Du dann problemlos importieren kannst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Ich habe jetzt einfach alle Spalten in nur ein Feld eingelesen:
Meine Formatdatei
8.0
1
1 SQLCHAR 0 9000 "\n" 1 Zeile ""Das erzeugt mir eine in SQL verarbeitbare Datenbasis. Wie kann ich diese Datenbasis jetzt nach leeren Datensätzen durchsuchen und die Datensatznummer (Zeilennummer) erhalten?
Nochmal Danke für Hilfe
Patrick
-
Hi,
vorausgesetzt, die Daten wurden wirklich in der richtigen Reihenfolge importiert, würde ich der Tabelle nach dem Import eine Spalte vom Typ int mit IDENTITY Eigenschaft verpassen (oder auch schon vorher, ob dann der BULK INSERT noch geht, weiß ich allerdings grade nicht). Dann kannst Du die erste Zeile mit leerem Inhalt über:
SELECT <IdSpalte> FROM <Tabelle> WHERE <Wertspalte> = ''
raussuchen. Aber ob das wirklich so einfach ist, kann ich dir nicht sagen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Patrick,
man kann sicher alles mögliche machen. Aber Sinn macht es IMHO keinen. Der Dateiinhalt hat eben kein ordentlich verarbeitbares Format. Da sind Krücken unausweichlich.
Ob es über eine Funktion, ein SSIS Paket oder was anderes gehen würde, kann ich dir so nicht sagen. Da müssen dann leider andere ran. Meine Ideen und Codebeispiele hab ich dir ja geschrieben. Mehr kann ich da leider nicht tun.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Patrick,
Bist Du weitergekommen? Ist der Thread noch aktuell?
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Zusammen,
ich habe das jetzt so gelöst, dass ich die Datei je Zeile als ein Datenfeld formatiere und dann über vba darin nach leeren Zeilen suche.
Viele Grüße
Patrick
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 20. Februar 2015 12:41