CSV SQLJak zaimportować plik CSV na SQL Server? Jak odczytać dane z pliku CSV i umieścić je na tabeli.

Zwykle piszę długie wstępy ,ale tym razem nie ma takiej potrzeby. Oto co należy zrobić.

Na dysku “C” utworzyłem plik tekstowy “csv.txt” i umieściłem w nim następujące dane.

1,Cezary,Walenciuk,19881112
2,Paweł,Krótszy,19780412
3,Paweł,Wodnisty,19650521
4,Bartek,Barteczki,19850112

Jak widać są one odpowiednio sformatowane.

Następnie wykonałem poniższy skrypt. Skrypt ten tworzy tymczasową tabele i umieszcza w niej dane z pliku CSV.

CREATE TABLE #CSVTable
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)

BULK
INSERT CSVTable
FROM 'c:\csv.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

SELECT *
FROM #CSVTable

DROP TABLE #CSVTable

Wyrażenie BULK odczytuje plik i wykonuje odpowiedni Insert do tabeli. Pole FILEDTERMINATOR określa znak końcowy danego pola. ROWTERINATOR natomiast określa znak kończący dany wiersz danych.

“\n” jest symbole nowej linii. W ten sposób dane zostały do tabelki.

image

W tym przykładzie nie kod T-SQL jest najważniejszy. Otóż w zależności od rodzaju kodowania pliku CSV może otrzymać różne rezultaty.

Jeśli plik jego kodowany w UTF-8 to SQL Serwer zwróci błąd ponieważ operacja BULK nie wspiera tego kodowania. Przy kodowaniu w ANSI polskie znaki zostają utracone.

SQL Server  musi też mieć uprawienia administratorskie do otwarcia danego pliku.