Blir inte klok, får det inte att funka.
Har en textfil, datat är kopierat från excel, dvs blev en lång textfil med värden som ser ut som följande:
002-2-17-23
002-1-17-23
osv.
Jag vill nu skjuta in det in en tabell som har två kolumner, aqup och info
den ena kolumnen aqup ska ha värdena ovanför och den andra ska få samma text, se nedan.
Försöker då med följande:
USE site12
GO
BULK
INSERT dbo.aquloc
FROM 'd:\site12.txt'
WITH
(
FIELDTERMINATOR ='\n',
ROWTERMINATOR ='\n'
)
GO
UPDATE dbo.aquloc
SET info ='OBS Varning!!'
Får följande fel:
Msg 2601, Level 14, State 3, Line 1
Cannot insert duplicate key row in object 'aquloc' with unique index 'aquloc_aqup_K'.
The statement has been terminated.
Felmeddelandet säger att du försöker skicka in ett befintligt värde i ett fält som bara tillåter unika värden.
Det verkar rimligt att du tar bort allt vad nycklar och index heter när du bulkar och sedan tvättar datat efteråt genom att ta bort sådant som inte skall finnas där, eventuellt justerar vissa värden och till sist skapar index och nycklar.
Kan man köra en massa av dessa samtidigt:
INSERT INTO dbo.aquloc (aqup,info)
VALUES ('002-2-17-23', 'OBS Varning!!')
VALUES ('002-2-16-23', 'OBS Varning!!')
VALUES ('002-1-17-23', 'OBS Varning!!')
I MySQL hade den syntaxen nästan fungerat:
insert into t(...) values (...),(...),(...)
I SQL Server får du i sådana fall skriva ut hela harangen varje gång:
insert into t(...) values (...);
insert into t(...) values (...);
insert into t(...) values (...);
Nåt i denna stil får det bli i så fall:
INSERT INTO dbo.aquloc (aqup) VALUES ('002-2-17-23')
INSERT INTO dbo.aquloc (aqup) VALUES ('002-2-16-23')
INSERT INTO dbo.aquloc (aqup) VALUES ('002-1-17-23')
......
UPDATE dbo.aquloc
SET info ='OBS Varning!!'
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849