RulleMedlem sedan juni 2000166 inlägg 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.
Peter SMedlem sedan dec. 20025 483 inlägg 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.
RulleMedlem sedan juni 2000166 inlägg Det är så konstigt, för det finns redan värden i tabellen som ser lika ut, men inte är exakt samma siffror.
Kan man göra på annat sätt?
RulleMedlem sedan juni 2000166 inlägg 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!!')
Peter SMedlem sedan dec. 20025 483 inlägg 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 (...);
...innan du kör dem i batch.
RulleMedlem sedan juni 2000166 inlägg 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!!'