Hallo Zusammen,
ich hoffe mir kann jemand helfen. Bin auch nach längerer Suche nicht schlauer geworden.
DB: MSSQL
Ziel:
Eine Adressliste soll regelmäßig aus einer CSV Datei in eine bestehende Datenbank mit Adressdaten importiert werden.
Einige Adressen kann es schon geben, diese werden dann nur aktualisiert und alle anderen werden importiert.
Problem ist die Vergabe des Keys.
Ich bin bisher wie folgt vorgegangen.
1. Anlage temp Tabelle mit den Feldern der csv Datei.
2. Bulk Insert aus der csv Datei
3. Insert Into aus der temp Tabelle zur Adresstabelle
Hier soll er jedoch anhand der bestehenden Adressnummer neue Adressnummern fortlaufend vergeben.
Mit MAX()+1 geht das super wenn ich nur einen Datensatz habe, aber sobald es mehrere sind funktioniert es nicht mehr.
Hier mal sehr abgespeckt nur mit den benötigten Feldern
CREATE TABLE temp_Adressen (
Matchcode VARCHAR(50)
);
BULK INSERT temp_Adressen
FROM 'C:\Test.csv'
WITH ( CODEPAGE = 'RAW', FIRSTROW = 2,
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n');
INSERT INTO Adressen (Adresse, Matchcode)
SELECT (SELECT MAX(Adressen.Adresse)+1 FROM Adressen), temp_Adressen.Matchcode FROM temp_Adressen WHERE temp_Adressen.Matchcode NOT IN (SELECT Adressen.Matchcode FROM Adressen);
Hat jemand eine Idee, wie die Vergabe des Keys ordentlich funktioniert?
Vielen Dank im Voraus
Scarry
ich hoffe mir kann jemand helfen. Bin auch nach längerer Suche nicht schlauer geworden.
DB: MSSQL
Ziel:
Eine Adressliste soll regelmäßig aus einer CSV Datei in eine bestehende Datenbank mit Adressdaten importiert werden.
Einige Adressen kann es schon geben, diese werden dann nur aktualisiert und alle anderen werden importiert.
Problem ist die Vergabe des Keys.
Ich bin bisher wie folgt vorgegangen.
1. Anlage temp Tabelle mit den Feldern der csv Datei.
2. Bulk Insert aus der csv Datei
3. Insert Into aus der temp Tabelle zur Adresstabelle
Hier soll er jedoch anhand der bestehenden Adressnummer neue Adressnummern fortlaufend vergeben.
Mit MAX()+1 geht das super wenn ich nur einen Datensatz habe, aber sobald es mehrere sind funktioniert es nicht mehr.
Hier mal sehr abgespeckt nur mit den benötigten Feldern
CREATE TABLE temp_Adressen (
Matchcode VARCHAR(50)
);
BULK INSERT temp_Adressen
FROM 'C:\Test.csv'
WITH ( CODEPAGE = 'RAW', FIRSTROW = 2,
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n');
INSERT INTO Adressen (Adresse, Matchcode)
SELECT (SELECT MAX(Adressen.Adresse)+1 FROM Adressen), temp_Adressen.Matchcode FROM temp_Adressen WHERE temp_Adressen.Matchcode NOT IN (SELECT Adressen.Matchcode FROM Adressen);
Hat jemand eine Idee, wie die Vergabe des Keys ordentlich funktioniert?
Vielen Dank im Voraus
Scarry