Import danych z AD do MS SQL

0

Cześć,

Męczę się od kilku dni z napisaniem odpowiedniego query w MS SQL do importowania danych z pliku csv. Nie mam za dużego doświadczenia z pisaniem więc zwracam się do Was o pomoc.

Wpadłem kilka dni temu na pomysł, aby zintegrować aplikację kontroli dostępu (KD) z Active Directory. Automatyzacja ma polegać na dodaniu informacji o nowych użytkownikach w AD do aplikacji KD. Znalazłem w bazie danych programu od kontroli dostępu tabele, do której są zapisywane informacje o nowych użytkownikach. Do tej pory zbudowałem skrypt do exportowania z AD informacji o nowych kontach które nie są starsze niż jeden dzień. Całość jest zapisywana do pliku csv.

Plik csv:

FirstName,LastName,Note1,Note2
Jan,Kowalski,j.kowalski,12345678
Adam,Nowak,a.nowak,45679023
Andrzej,Dudel,a.dudel,87654321

Tabela do której chce importować dane:


```![title](http://)
0

Ehh, coś poszło nie tak......

A więc, tabela do której chce dodać informację

SQL

Pola AccountID,TimeStamp, NodeID, UserPriority, UserID są stałe, które muszę uzupełnić jak w przykładzie powyżej.

Jak do tej pory udało mi się zaimportować csv do nowej tabeli o nazwie [dbo].[ADUsersTmp], następnie za pomocą inserta odczytać zawartość z tymczasowej tabeli przenieść do docelowej dodając stałe wartości w pola. Cały problem w tym, że nie wiem czemu w zmiennej zapisuje się tylko ostatnia wartość z tymczasowej tabeli.

DECLARE
@zmienna1 VARCHAR(100),
@zmienna2 VARCHAR(100),
@zmienna3 VARCHAR(100),
@zmienna4 VARCHAR(100),
@zmienna5 VARCHAR(100),
@zmienna6 VARCHAR(100),
@zmienna7 VARCHAR(100),
@zmienna8 VARCHAR(100);

SELECT	@zmienna1 = FirstName FROM [dbo].[ADUsersTmp]
SELECT	@zmienna2 = LastName FROM [dbo].[ADUsersTmp]
SELECT	@zmienna3 = Note1 FROM [dbo].[ADUsersTmp]
SELECT	@zmienna4 = Note2 FROM [dbo].[ADUsersTmp]

INSERT INTO [dbo].[CardHolder] (AccountID,TimeStamp, NodeID, UserPriority, UserID, FirstName, LastName, Note1, Note2)
	Values ('1',GETDATE(),'0','0','0',@zmienna1,@zmienna2,@zmienna3,@zmienna4);

1

Zapoznaj sie z bulk insert, moze bedzie dla ciebie pomocny. Mi sie przydal ;)

0

Jakieś postępy mam.

Importuje dane do tymczasowej tabeli, następnie za pomocą INSERT wstawiam dane do właściwej. Brakujące wpisy uzupełniam przez UPDATE.

Teraz zgłębiam działanie pętli "IF" i staram się zrobić całość na zasadzie aktualizacji wpisów jeśli istnieją, jeśli brak wpisów - INSERT

0

Co tu robię źle ?

Wywala mi błąd składni przy ELSE, SET i IF.

DECLARE @war bit


SELECT CASE WHEN EXISTS (
						SELECT *
						FROM [dbo].[CardHolder]
						Where LastName = 'Kowalski'
							)
		THEN 
			SET @war=(CAST(1 AS BIT)
		ELSE 
			SET @war=(CAST(0 AS BIT)) 
		END
		

if @war='true'
	begin
		Print 'Jest'
	END
	ELSE
	BEGIN
		PRINT 'Brak'
	END

1 użytkowników online, w tym zalogowanych: 0, gości: 1