Folosind Oracle Loader
- sinopsis
- Crearea unui fișier de control
- Crearea unui fișier de date
- Descărcarea datelor
- Încărcarea datelor fără crearea unui fișier de date
- Încărcarea datelor formatelor DATE
- Introducerea valorilor NULL
Pentru a utiliza încărcătorul Oracle, trebuie să creați un fișier de control, care să definească modul în care datele trebuie încărcate în baza de date; Un fișier de date care determină ce date ar trebui să fie încărcate în baza de date. Această secțiune descrie cum se creează astfel de fișiere.
Crearea unui fișier de control
Un fișier de control tipic are următoarea structură:
Un exemplu de fișier de control test.ctl:
Crearea unui fișier de date
Fiecare linie a fișierului de date reprezintă datele care vor fi rândul (tupla) tabelului după descărcare. Fiecare rând conține o listă de valori ale coloanelor (atribute), valorile sunt localizate în aceeași ordine cu numele de coloane din lista de nume de coloane ale fișierului de control, valorile sunt separate <разделителем>, definite în fișierul de control.
De exemplu, fișierul de date test.dat poate fi:
Amintiți-vă că lista de coloane (atribute) definite în test.ctl - (i, s), unde coloana i este de tip int, coloană s-char (10). Prin urmare, ca urmare a încărcării datelor din fișierul test.dat, următoarele tabele (tupluri) vor fi adăugate la tabela de testare:
Avertisment: Rețineți că a treia linie a test.dat are un spațiu după "|". Acest spațiu nu este ignorat de încărcător. Valoarea care va fi încărcată pentru atributul s este 'baz', un șir de caractere de patru caractere cu un spațiu inițial. Este o greșeală să credem că în loc să fie încărcat "baz" (șir de caractere cu trei caractere fără spațiul inițial). Acest lucru poate duce la probleme pe care nu le veți acorda atenție până când nu încercați să interogați datele descărcate, deoarece "baz" și "baz" sunt linii diferite.
Încărcătorul Oracle este numit sqlldr. Aceasta este o comandă UNIX, deci este apelată de la UNIX, nu de la sqlplus. Comanda are următorul format:
Toți parametrii acestei comenzi sunt opționali, în absența acestora sistemul va cere numele de utilizator, parola, numele fișierului de control.
Dacă fișierul de înregistrare sau fișierul de eroare nu este definit, sqlldr utilizează numele fișierului de control cu extensii .log și .bad, respectiv.
De exemplu, dacă utilizatorul sally dorește să ruleze test.ctl fișierul de control și să definească ieșirea jurnalului în fișierul test.log, comanda va arăta astfel:
Descărcarea de date fără a utiliza un fișier de date delimitat
Este posibil să utilizați numai un fișier de control pentru a încărca date, mai degrabă decât să utilizați un fișier de date separat.
În acest caz, în loc de numele fișierului, simbolul "*" este specificat și cuvântul cheie BEGINDATA este folosit pentru a porni secțiunea de date din fișierul de control.
Încărcarea datelor formatelor DATE
Încărcarea datelor de tip DATE (data) are unele caracteristici.
Să presupunem că ați creat un tabel cu o coloană care are tipul de date DATE:
În fișierul de control, când specificați coloanele (atributele) tabelului foo, în spatele numelui coloanei d, trebuie să specificați tipul de date DATE și masca de date. Masca definește formatul în care vor fi folosite datele. O mască este un șir de caractere încadrate în ghilimele și care conține:
De exemplu, fișierul de control ar putea arăta astfel:
Rețineți că în exemplul de mai sus, a doua linie (tuplă) ilustrează faptul că datele pot fi mai scurte decât masca corespunzătoare. Simbolul "-" va afișa încărcătorului că ziua și luna câmpului se termină mai devreme.
Introducerea valorilor NULL
Puteți defini valorile NULL pur și simplu lăsând câmpuri goale în fișierul de date. De exemplu, pentru a introduce valorile întregi într-un tabel cu o structură (a, b, c), puteți plasa, de exemplu, astfel de linii în fișierul de date:
Aceasta va introduce în tabel următoarele linii (nopți):
Trebuie reținut faptul că valorile cheilor primare sau alte restricții nu pot fi goale, astfel încât aceste linii nu vor fi adăugate.
Notă: În cazul în care ultimul câmp al fișierului de date ar trebui să fie o valoare goală (NULL), atunci fișierul de control trebuie să fie inclus după linia trailing NULLCOLS DOMENII DE NULLCOLS TERMINATED END, în caz contrar sqlldr nu adăugați această linie (tuplu). Sqlldr va respinge, de asemenea, rânduri (tupluri) în care toate valorile coloanelor sunt NULL.