hdreise
Goto Top

Datenimport Powershell in MsSql Datenbank aus AD

Guten Morge,

ich hab ein kleines Problem wo ich leider nicht so weiterkomme. Ich hab mit SQL Datenbanken sehr wenig Erfahrung, und ich hoffe ihr könnt mir weiterhelfen.

Ich hab eine MSSQL Datenbank vorliegen, in der Tabelle Import_Data sind schon ca. 100 Datensätze vorhanden.

Der Import funktioniert, aber ich hab dann die Personalnummer, Vornamen und Nachnamen mehrmals in der Datenbank, das ist natürlich nicht so gewollt. Könnt ihr mir einen Tipp geben wie ich vorgehen muss, damit nur neue Nutzer hinzugefügt werden?! Die Personalnummer ist einmalig.


foreach($data in $datas)

{
$nummer=[decimal]$data.EmployeeNumber 
$name=$data.Surname
$vorname=$data.GivenName

$insertquery="  
INSERT INTO [dbo].[IMPORT_DATA]

           ([Personalnummer]
           ,[Nachname]
           ,[Vorname])

     VALUES

           ('$nummer'  
           ,'$name'  
           ,'$vorname')  
GO
"  
Invoke-SQLcmd -ServerInstance 'TEST\SQLEXPRESS,1433' -query $insertquery -U sa -P testdb -Database smart   

Content-Key: 483440

Url: https://administrator.de/contentid/483440

Printed on: April 20, 2024 at 14:04 o'clock

Member: ukulele-7
Solution ukulele-7 Aug 09, 2019 at 06:47:23 (UTC)
Goto Top
Unter MSSQL bietet sich da der MERGE Befehl an. Die Syntax ist anders und wirkt erstmal umfangreich aber eigentlich ist es dafür gemacht. Wenn du eh nur einen Datensatz pro INSERT einfügst gingen auch diverse andere Möglichkeiten.

Du musst dir allerdings über SQL Injection klar sein, je nachdem was da in deinen Variablen steht.
Member: SlainteMhath
Solution SlainteMhath Aug 09, 2019 at 08:00:46 (UTC)
Goto Top
Moin,

...MERGE...
Das, und dann hilft es natürlich auch das Feld Personalnummer als PrimaryKey zu definieren.

lg,
Slainte