SQL Loader Oracle


System Zarządzania Bazami Danych Oracle
Import, eksport, ładowanie danych
System Zarządzania Bazami Danych Oracle
Loader
ż� możliwe jest przenoszenie danych z plików zewnętrznych
do tabel bazy danych Oracle a
sqlldr control =   []
Export, Import
ż� są wykorzystywane do wykonywania operacji eksportu/importu danych
np. podczas tworzenia kopii zapasowych. Zbiory eksportowane są
zapamiętywane (zachowywane) w formacie binarnym Oracle (tylko!)
i mogą zostać przeczytane jedynie przy pomocy narzędzia Import
exp [userid/passwd] [parfile= ]
SQL*Loader
Loader ładuje dane
ż� do wielu tabel w tym samym przebiegu
ż� z wielu plików zródłowych różnych typów
SQL*Loader
Fizyczne rekordy mogą być:
" składane w 1 logiczny rekord, który jest wstawiany do bazy
CONTINUEIF, CONCATENATE
" rozbijane na wiele rekordów fizycznych
INTO TABLE
" filtrowane
WHEN
" ładowane selektywnie
SQL*Loader
Loader może generować w kolumnach:
ż� unikalne sekwencje liczbowe
(klauzula SEQUENCE generuje unikalne wartości, znajdując
bieżącą wartość maksymalną w kolumnie i inkrementując ją dla
każdego wstawionego wiersza),
ż� aktualną datę (SYSDATE),
ż� wartości stałe (CONSTANT),
ż� numery rekordów (RECNUM).
SQL*Loader
Pliki SQL Loader a
wymagane
Ś� sterujący (control file)  opisuje, jak interpretować plik WE z danymi,
ć� z danymi (data file)  domyślne rozszerzenie .DAT,
generowane na żądanie
�� śladowy (log file)  musi być dostępny, aby ładowanie mogło się odbyć;
są tu informacje o przebiegu ładowania,
Ź� wierszy odrzuconych (bad file)  wiersze są tu zapisane w formacie ładowania,
mogą zostać poprawione i użyte jako plik wejściowy,
�� wierszy pominiętych (discard file)  gdy dane nie spełniają kryteriów
określonych klauzulą WHEN.
SQL*Loader
Pliki SQL Loader a
Ś� sterujący (control file),
ć� z danymi (data file),
�� śladowy (log file),
Ź� wierszy odrzuconych (bad file),
��wierszy pominiętych (discard file.
SQL*Loader
Plik wierszy odrzuconych .BAD
Do tego pliku trafiają dane z:
ż� niewłaściwym formatem wejściowym (np.  KOWALSKI ),
ż� nieunikalną wartością klucza,
ż� pola wymagające wartości pustej,
ż� powodujące błąd Oracle.
SQL*Loader
Informacje zawarte w pliku .LOG
1. Nagłówek
(data specyfikująca dzień, miesiąc, rok ładowania, nr wersji Loader a).
2. Informacje ogólne
(nazwy zbiorów wejściowych oraz wyjściowych, wyszczególnienie argumentów, które
wystąpiły w linii komend, specyfikacja symbolu kontynuacji).
3. Informacje o tabeli/tabelach
(nazwa tabeli, warunki ładowania /klauzula WHEN/, opcja ładowania /INSERT | APPEND |
REPLACE/, informacje o kolumnach /pozycja, długość, typ, ograniczniki kolumn,../)
4. Informacje o zbiorach danych (ta część występuje tylko dla zbioru/ów z błędnymi
danymi - numer błędu (Loader a i Oracle a), rekordy odrzucone)
5. Informacje o przebiegu ładowania
(dla każdej z tabel - liczba załadowanych wierszy, liczba wierszy odrzuconych z powodu
błędów, liczba wierszy, których pola były NULL, & )
6. Statystyki podsumowujące.
SQL*Loader
Przebieg ładowania
ścieżka konwencjonalna ścieżka bezpośrednia
?
Kiedy ładuje się indeksowaną tabelę, która
musi pozostać dostępna
Kiedy ładuje się nieindeksowaną tabelę, która
musi pozostać dostępna dla wstawień lub
uaktualnień
Kiedy ładuje się przez SQL*Net stosunkowo
małe ilości wierszy do dużych indeksowanych
tabel
SQL*Loader
Ścieżka konwencjonalna Ścieżka bezpośrednia
tworzy bloki danych, które już są w formacie
domyślna
bloków danych Oracle
używa SQL-owej komendy INSERT i bufora
budowanej tablicy wiązania (bind array) do nie używa SQL-owej komendy INSERT do
załadowania danych; w macierzy wiązania są wstawiania bloków do bazy
umieszczane wiersze czytane za jednym razem
może spowalniać ładowanie jest szybsza od konwencjonalnej
konkuruje z innymi zasobami Oracle a o zasoby Generowane bloki są bezpośrednio zapisywane
bazy do bazy danych
generowane są dodatkowe nagłówki jako
używa procedur zarządzania przestrzenią do
komendy SQL-owe, następnie wysyłane do
uzyskania następnego obszaru (wskaznik HWM)
Oracle a i przetwarzane
wymusza zastosowanie niektórych więzów
czeka na wypełnienie bufora danymi lub na
integralności na wierszach tabeli (UNIQUE,
koniec danych
PRIMARY, NULL)
używane są tylko puste bloki nie są wykonywane zapisy w plikach dziennika
SQL*Loader
HWM
Wskaznik HIGH_WATER_MARK jest maksymalną ilością
przestrzeni, jaką baza użyła dla tabeli.
SQL*Loader
Procesy użytkowników
Zapis bloków Polecenia
Metoda konwencjonalna
do bazy SQL
Metoda bezpośrednia
Server Oracle
Przetwarzanie poleceń SQL
Zarządzanie przestrzenią
BUFORY
Zarządzanie buforami
(kolejkami, rozwiązywanie sporów)
Czytanie bloków Zapis bloków
SQL*Loader
Budowa pliku sterującego
LOAD DATA
INFILE nazwa_zbioru_z_danymi | *
DISCARDFILE  nazwa_zbioru_dsc
APPEND | REPLACE | INSERT
CONTINUEIF THIS warunek | CONCATENATE n
INTO TABLE nazwa_tabeli
(pozycja | nazwa_kolumny) operator  symbol
WHEN warunek_nałożony_na_pole
FIELDS TERMINATED BY  symbol_oddzielający_pola
OPTIONALLY ENCLOSED BY  symbol_ograniczający
TRAILING NULLCOLS
(nazwa_kolumny_której odpowiada_pierwsze_pole specyfikacja_kolumny,
nazwa_kolumny_której odpowiada_drugie_pole specyfikacja_kolumny,
& )
SQL*Loader
Budowa pliku sterującego
LOAD DATA
INFILE nazwa_zbioru_z_danymi | *
DISCARDFILE  nazwa_zbioru_dsc
POSITION (numer : numer) specyfikacja typu pola
APPEND | REPLACE | INSERT
NULLIFnwarunek_nałożony_na_pole
CONTINUEIF THIS warunek | CONCATENATE
INTO TABLE nazwa_tabeli
TERMINATED BY symbol_kończący_pole
WHEN warunek_nałożony_na_pole
DATE(20)  format_daty
FIELDS TERMINATED BY  symbol_oddzielający_pola
wartość_kolumny_automatycznie_generowana
OPTIONALLY ENCLOSED BY  symbol_ograniczający
TRAILING NULLCOLS
(nazwa_kolumny_której odpowiada_pierwsze_pole specyfikacja_kolumny,
nazwa_kolumny_której odpowiada_drugie_pole specyfikacja_kolumny,
& )
SQL*Loader
Polecenia pliku sterującego
USERID - wyspecyfikowanie nazwy użytkownika/hasło (w przypadku pominięcia parametru
w linii komend)
INFILE - wskazanie, w jakim pliku są dane do ładowania (jeżeli są w pliku sterującym po
frazie BEGIN DATA, wówczas po słowie INFILE umieszczany jest znak *)
INTO TABLE - wskazanie, które tabele zostaną załadowane danymi
REPLACE - usuwa istniejące wiersze tabeli i ładuje na ich miejsce nowe
APPEND - rozbudowuje tabelę, dodając do niej nowe wiersze
INSERT - ładuje dane tylko do pustej tabeli (jeżeli tabela nie będzie pusta, to wystąpi błąd)
LOAD DATA - informacja o niezależności między danymi a kolumnami w tabeli(-ach)
CONCATENATE - liczba fizycznych rekordów składanych w jeden rekord logiczny, który zostanie
wstawiony do bazy
ROWS - określenie momentu wystąpienia punktu zachowania
CONTINUE LOAD - liczba rekordów do przeskoczenia
FIELDS TERMINATED BY - znak oddzielający dane mające wejść w skład poszczególnych
kolumn
ENCLOSED BY - znak (-i), będący ogranicznikiem pól tekstowych
BAD FILE - wyspecyfikowanie nazwy zbioru, w którym znajdą się złe dane
TRAILING NULLCOLS - ciąg spacji nie jest ładowany do tabeli jako odrębne kolumny z wart. NULL
BEGIN DATA -słowo kluczowe, będące nagłówkiem dla danych przeznaczonych do ładowania,
umieszczonych bezpośrednio w pliku sterującym
SQL*Loader
Opcje linii komend
USERID -wyspecyfikowanie nazwy użytkownika/hasło
CONTROL -wyspecyfikowanie nazwy pliku sterującego
LOG -wyspecyfikowanie nazwy pliku śladowego
BAD -wyspecyfikowanie nazwy pliku ze złymi wierszami
DISCARD -wyspecyfikowanie nazwy pliku z wierszami pominiętymi
DATA -wyspecyfikowanie nazwy pliku z danymi do załadowania
DISCARDMAX -maksymalna ilość odrzuconych wierszy, nie powodująca przerwania ładowania
danych
SKIP - ilość wierszy do pominięcia
LOAD - ilość rekordów (logicznych), które zostaną zewnętrznymi danymi
ERRORSr -dopuszczalna ilość błędów nie przerywających procesu ładowania
ROWS -określenie momentu wystąpienia punktu zachowania
BINDSIZE -rozmiar tablicy wiązania
SILENT -zablokowanie kierowania komunikatów na ekran podczas ładowania
DIRECT -bezpośrednia ścieżka ładowania
PARFILE -wyspecyfikowanie nazwy pliku z parametrami
SQL*Loader
Formaty danych wejściowch
1. fixed record format : każdy rekord ma tę samą długość w bajtach
2. variable record format : długość każdego rekordu jest zapisana
w pierwszym polu rekordu
3. stream record format : długość każdego rekordu jest dowolna
SQL*Loader
Przykład
wydzial
nr kod miasto
number(2) varchar2(5) varchar2(10)
np01.txt
np01.ctl
12,RAU2,"WARSZAWA"
LOAD DATA
10,"RMT1",KRAKOW
INFILE np01.txt
11,"SJO",GLIWICE
BADFILE np01.bad
13,RME2,"POZNAN"
DISCARDFILE np01.dsc
21,"RAU1",GLIWICE.
INSERT
22,"RMCH1",RYBNIK
INTO TABLE wydzial
42,"TT",OPOLE
FIELDS TERMINATED BY ","
21,"RG1",GLIWICE
OPTIONALLY ENCLOSED BY '"'
22,"RAU3",WROCLAW
(nr, kod, miasto)
30,"SJO",LODZ
System Zarządzania Bazami Danych Oracle
Export
Oracle - Export
Po co eksport?
ż� do archiwizacji logicznej bazy danych,
ż� żeby precyzyjnie wybrać dane, które mają trafić do kopii archiwalnej,
ż� żeby odzyskać dane o różnym poziomie ziarnistości  np. pojedyncze
tabele wybranego użytkownika, wszystkie obiekty wybranego
użytkownika, & ,
ż� plik eksportu może być wykorzystany do przenoszenia danych między
różnymi bazami danych.
Oracle - Export
Tryby eksportu
ż� TABLE - dane są eksportowane do niesklastrowanej tabeli
ż� USER - eksportowane są wszystkie obiekty schematu użytkownika
ż� FULL DATABASE - eksportowana jest cała baza danych
(trzeba mieć przywilej EXP_FULL_DATABASE)
�� typ przyrostowy
�� typ kumulacyjny
�� typ pełny
Oracle - Export
Tryby eksportu
ż� Eksport przyrostowy umożliwia sporządzenie pełnych kopii tych tabel, których
zawartość bądz definicja uległa zmianie od czasu wykonania ostatniego eksportu
przyrostowego, kumulacyjnego lub pełnego. Zmiana definicji wyzwalacza związanego z daną
relacją również powoduje wyeksportowanie danej relacji.
ż� Eksport kumulacyjny sporządza pełne kopie tych tabel, których zawartość bądz
definicja uległa zmianie od czasu wykonania ostatniego eksportu kumulacyjnego lub
pełnego. Oznacza to, że kopie danych sporządzone za pomocą wcześniejszych eksportów
inkrementalnych są już niepotrzebne ponieważ znajdują się w pliku ostatniego eksportu
kumulacyjnego.
ż� Eksport pełny jest równoważny eksportowi całej bazy danych. Dodatkowo,
wykonanie tego eksportu powoduje usunięcie informacji systemowych związanych z każdą
relacją bazy danych, a dotyczących kolejnych eksportów inkrementalnych i kumulacyjnych.
Oracle - Export
Uwagi
1. W czasie eksportowania danych baza danych musi być otwarta
(online), oznacza to, że użytkownicy mogą modyfikować jej zawartość.
2. Przed wyeksportowaniem każdej z tabel system sporządza jej kopię
z danej chwili. Zmiany wprowadzane do tabeli w czasie jej
eksportowania nie znajdą się więc w pliku eksportu.
3. Jeżeli jednak nie jest pożądane aby użytkownicy mieli dostęp do bazy
danych w czasie jej eksportowania, to należy bazę otworzyć w trybie
RESTRICT.
Oracle - Export
Specyfikacja parametrów programu exp
1. W trybie interaktywnym, w którym system pyta o wartości parametrów.
2. W linii komend polecenia exp.
3. W pliku parametrów określonym słowem kluczowym PARFILE.
exp FILE=d:\export\uzytk_u1u2.dat OWNER=(u1, u2) LOG=d:\export\exp.log
exp FILE=d:\export\u1u2_1.dmp TABLES=(u1.pracownicy, u2.studenci) LOG=d:\export\log1
Oracle - Export
Polecenia pliku z parametrami
ż� USERID - wyspecyfikowanie nazwy użytkownika inicjującego eksport
ż� FULL - czy praca w trybie FULL DATABASE
ż� FILE - wyspecyfikowanie nazwy pliku, do którego są eksportowane dane
ż� GRANTS - eksport przywilejów
ż� INDEXES - eksport indeksów
ż� CONSTRAINTS - eksport więzów integralności
ż� TABLES - lista tabel do wyeksportowania
ż� BUFFER - maksymalna liczba wierszy w tabeli
ż� ROWS - eksport wierszy tabeli
ż� LOG - wyspecyfikowanie nazwy zbioru, do którego odsyłane są komunikaty
ż� FEEDBACK - po wyeksportowaniu ilu rzędów ma pojawić się na ekranie znak .
Export pełny
zbiór eksportowy
Baza danych
tabela 3
tabela 4
tabela 1
tabela 2
tabela 3
tabela 2
Indeks 1 Indeks 2
tabela 4
tabela 1
Indeks 1
Indeks 2
exp sys/manager inctype complete
Export przyrostowy
modyfikacja
zbiór eksportowy
Baza danych
tabela 1
tabela 2
tabela 3 tabela 3
Indeks 1 Indeks 2 Indeks 2
tabela 4
tabela 1
exp sys/manager inctype incremental
Export kumulacyjny
kombinacja eksportów przyrostowych z kolejnych chwil czasu (t1 t2 t3 .. tn)
modyfikacja w chwili t1
zbiór eksportowy
Baza danych
tabela 3
tabela 1
tabela 2
tabela 3
tabela 1
Indeks 2
Indeks 1 Indeks 2
tabela 4
tabela 4
Indeks 1
modyfikacja w chwili t2
exp sys/manager inctype cumulative
Rys. 4. Zależności między eksportem inkrementalnym, kumulacyjnym i pełnym
Export
I  eksport przyrostowy
C  eksport kumulacyjny
d  dni
eksport pełny
SQL*Loader
to już koniec&
Wesołych Świąt!


Wyszukiwarka

Podobne podstrony:
kurs oracle podstawy sql
Oracle?tabaseg Programowanie w jezyku PL SQL or10ps
17 Procedury składowane w języku PL SQL (Oracle)
Tablice Informatyczne Oracle PL SQL
informatyka programowanie serwera oracle 11g sql i
Oracle?tabaseg Programowanie w jezyku PL SQL or11ps
Oracle8 Programowanie w jezyku PL SQL or8pls
Optymalizacja Oracle SQL Leksykon kieszonkowy oporsq
Oracle?tabaseg i SQL Programowanie or11pr
sql framework aug94
sql
sql
tips portable sql
oracle08
sql createtable
Sql ib

więcej podobnych podstron