Cześć ,
Mam problem z masowym importem danych z pliku csv do bazy danych (rekordów ponad 2 miliony)
Mam tabelkę 'Samochód' z kolumnami:
SamochodID int not null primary key identity(1,1),,
DataGodzinaZakupu nvarchar(50),
MiejsceZakupu nvarchar(50),
WojewodztwoZakupu nvarchar(50),
UszkodzeniaPojazdu nvarchar(50),
StanPojazdu nvarchar(50),
CenaPojazdu nvarchar(50),
RokProdukcji nvarchar(50)
Wszystkie kolumny są nvarchar
Oraz plik csv Samochod.csv
, gdzie w każdej kolumnie znajdują się te informacje:
DataGodzinaZakupu | Miejsce Zakupu|WojewodztwoZakupu |UszkodzeniaPojazdu|StanPojazdu | CenaPojazdu|RokProdukcji
---------------- | -------------------
|12.06.2005 12:45 | Warszawa| Mazowieckie| Uszkodzony Zderzak| Dobry| 5700| 2007
| 17.08.2016 1800| Białystok| Podlaskie| Brak| Dobry| 6570| 2005
| 9.11.2019 1045| Poznań| Wielkopolskie| Uszkodzony tłumik| Dostateczny| 4570| 2001
| 08.07.2018 1000|Opole| Opolskie| Uszkodzony zbiornik paliwa| Dobry| 9874| 2000
Próbuję to załadować Bulk Insertem w ten sposob:
GO
bulk insert Wypadki
from 'Lokalizacja'
with(
FORMAT='CSV',
FIELDQUOTE = '"',
FIRSTROW=2,
FIELDTERMINATOR=',',
ROWTERMINATOR='\n',
TABLOCK
)
GO
Lecz wywala cały czas błąd
Msg 7301, Level 16, State 2, Line 31 Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".
Nie pomogło zamiana Format CSV na DATAFILETYPE = 'char'
, nie pomogło też rowterminator na szesnastkowy .
Chcę jeszcze nadmienić iż wolę to zrobić BULK INSERTEM niż SSIS , bo tam też wywala błąd.
Zamiana formatu pliku także nic nie pomaga , formatowanie kolumn na tekstowe także nic nie daje.