Es gibt viele Möglichkeiten Daten in den SQL-Server zu schreiben.
Hier zeige ich euch die verschiedenen Arten des INSERT INTO – Statements.
Beim Aufbau der Statements muss auch die Eigenschaft der Felder innerhalb der Tabelle(n) geachtet werden. Es muss jedes Feld der Tabelle gefüllt werden, dass das Merkmal NOT NULL hat. Wird ein Feld mit diesem Merkmal vergessen, bekommt man einen Fehler. Es können die Daten in Tabellen oder in temporäre Tabellen eingefügt werden.
Will man in eine Tabelle mit einem Primärschlüssel, der automatisch vom SQL-Server gesetzt, lässt man diese Spalte und den Value einfach weg. Wenn der Primärschlüssel nicht vom SQL-Server gesetzt wird, muss dieser Wert im Statement natürlich angegeben werden.
Will man etwas mehr Daten importieren, kann man das Statement innerhalb einer WHILE-Schleife einsetzen. Hier arbeitet man dann am besten mit Variablen oder mit einem SELECT-Statement.
Benötigte Rechte
Um Daten in den SQL-Server zu schreiben benötigt Ihr mindestens eines dieser Rechte:
- db_datawriter
- db_owner
- sysadmin
Aufbau der Syntax
Der Aufbau der Syntax ist in den unten beschrieben Möglichkeiten bis auf kleine Unterschiede immer gleich.
Als erstes kommt das Schlüsselwort was man eigentlich machen möchte.
Als zweites kommt die Lokation wohin die Daten geschrieben werden sollen „Tabellen_Name“. (Möchte man Daten zwischen zwei verschiedenen Datenbanken verwenden muss der Tabellenname mit „Datenbank_Name“.“Schema“ erweitert werden.)
Als drittes kommt in den meisten Fällen das Schlüsselwort VALUES.
Als letzte Angabe kommen dann die Werte, die in die Tabelle eingefügt werden sollen.
Feste Werte (1 Datensatz)
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...) VALUES ("Wert1", "Wert2", ...);
Import von mehreren festen Werten (n Datensätzen)
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...) VALUES ("Wert1", "Wert2", ...), ("Wert1", "Wert2", ...), ("Wert1", "Wert2", ...);
Variablen
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", "Spalte3", ...) VALUES (@Variable1, @Variable2, @Variable3, ...)
SELECT – STATEMENT
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", "Spalte3", ...) SELECT "Spalte1", "Spalte2", "Spalte3", ... FROM "Tabellen_Name"
Nutzt man den INSERT mittels SELECT – Statement fällt das Schlüsselwort VALUES weg.
ACHTUNG: Importiert man mittels SELECT – Statement Daten kann es sein, dass man String Felder auf Hochkommas untersuchen muss. Eine Möglichkeit dies zu tun und gleichzeitig die Hochkommas dynamisch zu maskieren findet Ihr im Artikel SELECT – STATEMENT.