CSV-Dateien als Datenquelle für MS-SQL-Server nutzen

Gilt es Daten aus anderen Quellen in eine SQL-Datenbank zu übernehmen, so ist das CSV-Format häufig der kleinste gemeinsame Nenner. Der Microsoft SQL-Server bietet seit der Version 2008 bereits die Möglichkeit über einen BULK-INSERT Daten aus CSV-Dateien zu lesen.

BULK INSERT Adressen
    FROM 'C:\Daten\AdressenExport.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ';', 
    ROWTERMINATOR = '\n',   
    ERRORFILE = 'C:\Daten\AdressenImportFehler.csv', 
    TABLOCK
    )

Bei diesem Vorgehen ist es wichtig, dass die Anzahl und Reihenfolge der Spalten in der Datenbank der Reihenfolge der Spalten in der CSV-Datei entspricht.

Erklärung der Parameter:

FIRSTROW
Ab dieser Zeile beginnen die Datensätze. Es wird bei 1 begonnen zu zählen, wenn also die CSV-Datei die Überschriften der Spaltenköpfe beinhaltet, ist hier 2 anzugeben.
FIELDTERMINATOR
Hier ist das Trennzeichen zwischen den einzelnen Spalten in einfachen Hochkommas anzugeben, für gewöhnlich ‚;‘ oder ‚,‘.
ROWTERMINATOR
Mit dieser Angabe wird das Zeichen angegeben, dass einen Zeilenwechsel und somit einen neuen Datensatz einleitet. Auch Kombinationen wie ‚\n\r‘ sind möglich.
ERRORFILE
Mit diesen optionalen Parameter kann eine Datei angegeben werden, in der jene Datensätze gespeichert werden, die z.B. aufgrund der Überschreitung der Feldlänge oder der Auslassung eines Pflichtfeldes in der Datenbanktabelle nicht importiert werden können.
TABLOCK
Sperrt die Tabelle während des Imports, was vor allem Performancevorteile mit sich bringen kann.

T-SQL Primärschlüssel zurücksetzen

Mit Hilfe des DBCC CHECKIDENT Befehls des MS SQL Servers lässt sich der Primärschlüssel mit Identitätsspezifikation einer Tabelle neu vergeben und steuern. Neben wir an, in einer Tabelle „Adresse“ sind hundert Datensätze enthalten, mit dem Primärschlüssel beginnend bei 1 und endend bei 100. Möchten wir nun, dass der nächste eingefügte Datensatz den Schlüssel 250 enthält, können wir dies mit folgenden Befehl erreichen:

DBCC reseed: id  bei 250 fortsetzen
DBCC reseed: id bei 250 fortsetzen

Wenn man sich zum Beispiel innerhalb eines Unit-Tests auf Datensätze aus einer Datenbank beziehen muss, ist sicherzustellen, dass spezifische Datensätze über die gleichen Schlüssel zu erreichen sind. Wenn eine Tabelle nicht über TRUNCATE zurückgesetzt werden kann, bleibt nur ein einfacher DELETE. Mit einem anschließendem DBCC CHECKIDENT Befehl, können dann die Schlüssel zurückgesetzt werden, um wie im Beispiel wieder ab Datensatz 250 fortfahren zu können.

Primärschlüssel zurücksetzen nach DELETE
Primärschlüssel zurücksetzen nach DELETE