IMPORT DANYCH Z PLIKU PŁASKIEGO: BULK INSERT

Kursy Online SQL Server Bazy Danych Microsotf Import Bulk Insert Andrzej Śmigielski

BULK INSERT:

 
Opcja BULK INSERT umożliwia importowanie danych z heterogenicznych źródeł. W tym temacie zajmiemy się formatem plików płaskich, do których należą pliki tekstowe, czyli np. „.txt” czy „.csv”.
Należy zachować szczególną ostrożność podczas importowania danych do tabeli, w której istnieją już inne dane, ponieważ może dojść do błędnej konwersji dotyczącej zazwyczaj danych liczbowych i ich zaokrąglania czy traktowania kropek i przecinków. Mało tego, że zaimportujemy błędne wartości, to istniejące skrypty działając na błędnie zaimportowanych danych będą generowały dalsze błędne wyliczenia.
Za pomocą tej opcji można importować pliki z maksymalną liczbą pól wynoszącą 1024.
 

Argumenty opcji: BULK INSERT

BATCHSIZE = BATCH_SIZE Określenie liczby wierszy partii. Partia to ilość danych objętych transakcją. Wystąpienie błędu importu powoduje wycofanie transakcji.
CHECK_CONSTRAINTS Oznacza konieczność sprawdzania ograniczeń CHECK oraz FOREIGN KEY podczas importu danych. Bez użycia tej opcji ograniczenia te są ignorowane a następnie oznaczane jako niezaufane. Natomiast ograniczenia UNIQUE oraz PRIMARY KEY zawsze są sprawdzane.
Jeżeli kolumna znakowa ma ograniczenie NOT NULL, a plik nie będzie zawierał danych to zostanie wstawiony pusty łańcuch.
CODEPAGE Określenie strony kodowej danych w pliku:
ACP – dotyczy danych typu CHAR i VARCHAR, konwertuje dane z pliku ANSI, ISO 1252.
OEM – domyślnie, dotyczy danych typu CHAR i VARCHAR, konwertuje dane z pliku OEM.
RAW – brak konwersji, najszybsze działanie.
CODE_PAGE – dotyczy określonego numeru strony kodowej, np. 850. Brak obsługi strony kodowej 65001 (UTF-8).
‘DATA_FILE’ Pełna ścieżka do pliku.
DATABASE_NAME Nazwa bazy danych.
DATAFILETYPE Określenie typu pliku:
CHAR – domyślnie, format znakowy.
NATIVE – plik z tożsamymi typami danych jak w SQL Server. Opcja ta jest bardziej wydajna od opcji CHAR.
WIDECHAR – format znaków unicode.
WIDENATIVE – plik z tożsamymi typami danych jak w SQL Server, ale poza CHAR i VARCHAR z danymi unicode.
ERRORFILE = ‘FILE_NAME’ Określa nazwę pliku z błędami importu. Plik ten zawiera wiersze z importowanego pliku, których ze względu na błędy nie udało się zaimportować.
FIELDTERMINATOR = FIELD_TERMINATOR Określenie terminatora, czyli znaku jakim oddzielane są pola w pliku.
FIRE_TRIGGERS Powoduje uruchomienie wyzwalaczy.
FIRSTROW = FIRST_ROW Określenie numeru wiersza, od którego mają być ładowane dane.
FORMATFILE = FORMAT_FILE_PATH Pełna ścieżka do pliku formatu. Pliku formatu należy używać w sytuacji, gdy ilość lub kolejność danych w pliku jest różna od miejsca docelowego importowanych danych.
KEEPIDENTITY Określa, czy będą importowane wartości identyfikujące (ID).
KEEPNULLS Określa, że w przypadku braku danych w pliku importując je do kolumn z wartościami domyślnymi mają być zachowane NULL’e.
KILOBYTES_PER_BATCH = KILOBYTES_PER_BATCH Określenie przybliżonej liczby kilobajtów (KB) danych w partii.
LASTROW = LAST_ROW Określenie liczby ostatniego wiersza do załadowania danych. Domyślnie jest 0, co oznacza wiersz ostatni.
MAXERRORS = MAX_ERRORS Określenie maksymalnej liczby błędów, gdzie 1 wiersz = 1 ewentualny błąd. Domyślne ustawienie to 10.
ORDER Określa sposób sortowania danych:
ASC (Ascending) – rosnąco.
DESC (Descending) – malejąco.
ROWS_PER_BATCH = ROWS_PER_BATCH Określenie przybliżonej liczby wierszy danych w pliku. Podanie tej wartości pozwala zoptymalizować import, ale pod warunkiem, że liczba ta będzie przybliżona do faktycznej liczby wierszy.
ROWTERMINATOR = ROW_TERMINATOR Określa terminator wiersza w plikach danych typu CHAR i WIDECHAR. Domyślnym terminatorem wiersza jest \ r \ n, czyli znak nowego wiersza.
SCHEMA_NAME Nazwa schematu.
TABLE_NAME Nazwa tabeli.
TABLOCK Zablokowanie tabeli na czas importu.
VIEW_NAME Nazwa widoku.

 

          W SQL Server mamy kilka opcji umożliwiających importowanie (także eksportowanie, jest ono omówione w odrębnej lekcji tego kursu) danych z heterogenicznych źródeł.
Poza opcją BULK INSERT są jeszcze dostępne dwie podobne funkcjonalności:
• OPENROWSET
Za pomocą tej opcji można także zaimportować płaski plik, ale funkcjonalność OPENROWSET jest zdecydowanie bardziej rozbudowana i została omówiona w odrębnej lekcji kursu na poziomie zaawansowanym.
• BCP (Bulk Copy)
Jest to narzędzie dostępne z linii poleceń (CMD) umożliwiające zarówno importowanie jak i eksportowanie danych z SQL Server’a do plików i odwrotnie. W tym temacie skupimy się jednak na rozwiązaniach związanych bezpośrednio z SSMS.
 

Import danych z pliku płaskiego za pomocą SSMS – krok po kroku:

Jest to sposób bez implementowania kodu, czyli za pomocą „wyklikania”.
Temat ten jest dokładnie opracowany w pełnym kursie zaawansowanym.
 
 

PLIKI DO ŚCIĄGNIĘCIA:

1. 013_Import_Danych_Z_Pliku.sql
2. 013_Import_Danych_Z_Pliku_Nazwiska.txt
3. 013_Import_Danych_Z_Pliku_Miasta.txt
 

Chcę poznać SQL od środka

KURSY SQL ONLINE