SQL*Loader (2) SQL*Loader (1) SQL*Loader. SQL*Loader (4) SQL*Loader (3) Wczytywanie danych ze źródeł zewnętrznych

Podobne dokumenty
bazy danych - heterogeniczność producenci funkcjonalność modele danych protokoły komunikacyjne

Procedury i funkcje składowane

ACESS- zadania z wykorzystaniem poleceń SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Bazy Danych i Usługi Sieciowe

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Bazy danych i usługi sieciowe

Język SQL. Rozdział 8. Język manipulowania danymi DML

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Pakiety podprogramów Dynamiczny SQL

Język SQL. Rozdział 2. Proste zapytania

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Relacyjne bazy danych. Podstawy SQL

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Operacja PIVOT w języku SQL w środowisku Oracle

Oracle PL/SQL. Paweł Rajba.

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

PODSTAWY BAZ DANYCH 13. PL/SQL

Język PL/SQL Procedury i funkcje składowane

SQL*Loader. Export/Import

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Widok Connections po utworzeniu połączenia. Obszar roboczy

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

PL/SQL. Zaawansowane tematy PL/SQL

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Wykład 5. SQL praca z tabelami 2

Ćwiczenia 2 IBM DB2 Data Studio

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

15. Funkcje i procedury składowane PL/SQL

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bloki anonimowe w PL/SQL

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Bloki anonimowe w PL/SQL

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

SQL do zaawansowanych analiz danych część 1.

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Modelowanie wymiarów

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

Komunikacja z bazą danych psql

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Język PL/SQL. Rozdział 2. Kursory

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Oracle PL/SQL. Paweł Rajba.

Oracle11g: Wprowadzenie do SQL

1. ELEMENTY JĘZYKA PL/SQL

Wykład 6. SQL praca z tabelami 3

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Deklarowanie kursora

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Oracle 12c: Nowości w SQL i PL/SQL

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Typy Oracle atrybutów relacji Typ NUMBER (1)

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Relacyjne bazy danych. Podstawy SQL

Typy Oracle atrybutów relacji Typ NUMBER (1)

1. Wyzwalacze BD (ang. triggers)

Bazy danych i usługi sieciowe

Tabele wykorzystywane w przykładach

Ćwiczenie zapytań języka bazy danych PostgreSQL

Klasyczna Analiza Danych

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Język SQL, zajęcia nr 1

Obiektowe bazy danych

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Hurtownie danych - przegląd technologii

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Język SQL. Rozdział 8. Język manipulowania danymi DML zadania

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Bazy danych 10. SQL Widoki

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

SQL :: Data Definition Language

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Język PL/SQL Wprowadzenie

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Transkrypt:

Wczytywanie danych ze źródeł zewnętrznych (1 Źródła zewnętrzne bazy danych - heterogeniczność producenci funkcjonalność modele danych protokoły komunikacyjne pliki tekstowe, HTML, XML arkusze kalkulacyjne teksty formatowane edytorami Wczytywanie danych ze źródeł zewnętrznych (2 Protokoły komunikacyjne Net8 ODBC/JDBC gateways Oprogramowanie Oracle SQL*Loader Warehouse Builder polecenia SQL tabele zewnętrzne (external tables multitable insert merge 1 2 SQL*Loader (1 SQL*Loader (2 plik danych plik sterujący SQL*Loader pliki logów INFILE * INTO TABLE dept FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (deptno, dname, loc BEGINDATA 12,RESEARCH,"SARATOGA" 10,"ACCOUNTING",CLEVELAND 11,"ART",SALEM 13,FINANCE,"BOSTON" 21,"SALES",PHILA. 22,"SALES",ROCHESTER 42,"INT'L","SAN FRAN" sqlldr USERID=scott/tiger CONTROL=ulcase1.ctl LOG=ulcase1.log 3 4 SQL*Loader (3 SQL*Loader (4 INFILE 'ulcase2.dat' INTO TABLE emp (empno POSITION(01:04 INTEGER EXTERNAL, ename POSITION(06:15 CHAR, job POSITION(17:25 CHAR, mgr POSITION(27:30 INTEGER EXTERNAL, sal POSITION(32:39 DECIMAL EXTERNAL, comm POSITION(41:48 DECIMAL EXTERNAL, deptno POSITION(50:51 INTEGER EXTERNAL 7782 CLARK MANAGER 7839 2572.50 10 7839 KING PRESIDENT 5500.00 10 7934 MILLER CLERK 7782 920.00 10 7566 JONES MANAGER 7839 3123.75 20 7499 ALLEN SALESMAN 7698 1600.00 300.00 30 7654 MARTIN SALESMAN 7698 1312.50 1400.00 30 7658 CHAN ANALYST 7566 3450.00 20 INFILE * APPEND INTO TABLE emp FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' (empno, ename, job, mgr, hiredate DATE(20 "DD-Month-YYYY", sal, comm, deptno CHAR TERMINATED BY ':', projno, loadseq SEQUENCE(MAX,1 BEGINDATA 7782, "Clark", "Manager", 7839, 09-June-1981, 2572.50,, 10:101 7839, "King", "President",, 17-November-1981,5500.00,,10:102 7934, "Miller", "Clerk", 7782, 23-January-1982, 920.00,, 10:102 7566, "Jones", "Manager", 7839, 02-April-1981, 3123.75,, 20:101 7499, "Allen", "Salesman", 7698, 20-February-1981, 1600.00, 300.00, 30:103 7654, "Martin", "Salesman", 7698, 28-September-1981, 1312.50, 1400.00, 3:103 7658, "Chan", "Analyst", 7566, 03-May-1982, 3450,, 20:101 7654 Robert Wrembel MARTIN - Politechnika Poznańska, SALESMAN Instytut Informatyki 7698 1312.50 1400.00 30 5 6

Wielotabelowy INSERT (1 bezwarunkowy INSERT ALL into hist_placy values(id_prac, zatrudniony, pensja into hist_zatrudnienia values(id_prac, zatrudniony, id_zesp select id_prac, zatrudniony, placa_pod+nvl(placa_dod,0 pensja, id_zesp from pracownicy where id_zesp!=50; Wielotabelowy INSERT (2 warunkowy INSERT ALL ten sam rekord moŝe spełniać wiele warunków klauzuli WHEN jest wstawiany do wielu tabel when id_zesp=10 then into hist_zesp10 values(id_prac, zatrudniony, id_zesp when id_zesp=20 then into hist_zesp20 values(id_prac, zatrudniony, id_zesp when placa_pod>600 then into hist_placy values(id_prac, zatrudniony, placa_pod select id_prac, zatrudniony, id_zesp, placa_pod 7 8 Wielotabelowy INSERT (3 Wielotabelowy INSERT (4 create table sprzedaz_zdenorm (id_sprzedazy number(6 primary key, nr_tygodnia number(2 not null, id_produktu number(6 not null, ilosc_pon number(4, ilosc_wt number(4, ilosc_sr number(4, ilosc_czw number(4, ilosc_pt number(4, ilosc_sob number(4, ilosc_nie number(4; create table sprzedaz (id_sprzedazy number(6 not null, nr_tygodnia number(2 not null, id_produktu number(6 not null, sprzedaz number(4 not null; insert _zdenorm values (1, 21, 100, 40, 45, 35, 120, 310, 290, 20; insert _zdenorm values (2, 22, 100, 41, 46, 36, 121, 311, 291, 21; values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_pon values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_wt values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_sr values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_czw values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_pt values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_sob values(id_sprzedazy, nr_tygodnia, id_produktu, ilosc_nie select * from sprzedaz_zdenorm; 9 10 Wielotabelowy INSERT (5 Wielotabelowy INSERT (6 warunkowy FIRST INSERT ten sam rekord moŝe spełniać wiele warunków klauzuli WHEN jest wstawiany do tabeli wyłącznie w pierwszej klauzuli WHEN insert first when id_zesp=10 then into hist_zesp10 values(id_prac, zatrudniony, id_zesp when id_zesp=20 then into hist_zesp20 values(id_prac, zatrudniony, id_zesp when placa_pod>600 then into hist_placy values(id_prac, zatrudniony, placa_pod select id_prac, zatrudniony, id_zesp, placa_pod insert first when id_zesp=10 and etat='asystent' then into p1 when id_zesp=20 then into p2 else into p3 select * 11 12

dane przechowywane w plikach tekstowych poza bazą danych tylko do odczytu nie moŝna tworzyć indeksów nie moŝna definiować integralnościowych operowanie przez SELECT Ŝadnych ograniczeń w momencie wykonywania SELECT dane są dynamicznie wczytywane do tabeli zewnętrznej pliki tekstowe (źródło danych dla tabel zewnętrznych w katalogu wskazywanym przez DIRECTORY 13 - tworzenie (1 create or replace directory exttab_sources as 'c:\exttab'; (id_sprzedazy number(6, nr_tygodnia number(2, id_produktu number(6, sprzedaz number(4 opis oprogramowanie wczytujące dane z pliku 2 procesy wczytujące równolegle po 100 rekordach odrzuconych z powodu błędów zapytanie do tabeli zewnętrznej przerywane z błędem 14 - tworzenie (2 reject limit liczba unlimited type oracle_loader (SQL*Loader oracle_internal (export/import na razie nie wspierane - tworzenie (3 (id_sprzedazy number(6, create or replace directory nr_tygodnia number(2, exttab_sources1 as 'c:\exttab1'; id_produktu number(6, sprzedaz number(4 badfile 'bledy.log' ( id_sprzedazy char(4, nr_tygodnia char(4, id_produktu char(4, sprzedaz char(4 location(exttab_sources1:'sprzedaz.txt' 15 16 - klauzule (1 (id_sprzedazy number(6, nr_tygodnia number(2, id_produktu number(6, sprzedaz number(4 load when id_sprzedazy='10' ( id_sprzedazy char(6, nr_tygodnia char(4, id_produktu char(6, sprzedaz char(4 location(exttab_sources1:'sprzedaz.txt' LOAD WHEN - ograniczenie wczytywanych rekordów klauzula LOAD WHEN kolumna='wartość' warunki ograniczające moŝna nakładać wyłącznie na pierwszą kolumnę w pliku źródłowym pliki LOGu - klauzule (2 ( ( ( badfile 'bledy.log' discardfile 'discard.log' location(; badfile - rekordy niewczytane z powodu błędów discardfile - rekordy odrzucone klauzulą WHEN logfile - plik logu z sesji wczytywania 17 18

- klauzule (3 - klauzule (4 LOCATION wiele plików źródłowych, w róŝnych katalogach ( location(exttab_sources1:'sprzedaz.txt', exttab_sources2:'sprzedaz1.txt', 'sprzedaz2.txt' ; SKIP n pomija n pierwszych rekordów z pliku wejściowego, np. nagłówek pliku, nagłówki kolumn skip 2 19 20 - klauzule (5 MISSING FIELD VALUES ARE NULL 1; 10; 100; 12 2; 11; 100; 22 3; 11; 110; 34 4; 11; 120; 77 5; 12; 100; 33 6; 10; 1; 45 7; bez powyŝszej klauzuli ten rekord nie zostanie wczytany skip 1 missing field values are null create table prac_historia as select * from pracownicy where 1=2; MERGE (1 merge into prac_historia ph using pracownicy p tabela, zapytanie, perspektywa on (ph.id_prac=p.id_prac when matched then update set ph.placa_pod=p.placa_pod, ph.placa_dod=p.placa_dod, ph.etat=p.etat when not matched then insert values (p.id_prac, p.nazwisko, p.etat, p.id_szefa, p.zatrudniony, p.placa_pod, p.placa_dod, p.id_zesp; 21 22 MERGE (2 CASE (1 create table prac_historia1 as select nazwisko, etat, placa_pod, id_zesp from pracownicy where 1=2; case wyraŝenie when warunek 1 then wynik 1 when warunek 2 then wynik 2 when warunek n then wynik n merge into prac_historia1 ph using (select nazwisko, etat, placa_pod, id_zesp from pracownicy p on (ph.nazwisko=p.nazwisko and ph.id_zesp=p.id_zesp when matched then update set ph.placa_pod=p.placa_pod, ph.etat=p.etat when not matched then insert (ph.id_zesp, ph.placa_pod, ph.etat, ph.nazwisko values (p.id_zesp, p.placa_pod, p.etat, p.nazwisko; end else wynik z jeŝeli wyraŝenie spełnia warunek 1 CASE przyjmuje wynik 1 w przeciwnym przypadku sprawdzany warunek 2 jeŝeli Ŝaden z warunków nie jest spełniony, wyraŝenie przyjmuje wynik z instrukcji ELSE w przypadku braku ELSE, CASE przyjmuje NULL wszystkie wyniki muszą być tego samego typu jeŝeli kilka warunków jest spełnionych, wybierany jest pierwszy 23 24

CASE (2 CASE (3 select nazwisko, etat, placa_pod, case etat when 'ADIUNKT' then placa_pod*1.2 when 'ASYSTENT' then placa_pod*1.1 when 'PROFESOR' then placa_pod*1.4 end "po zapowiadanej podwyŝce" select nazwisko, placa_pod + (case when placa_dod is null then 0 else placa_dod end pensja CASE w wyraŝeniu select nazwisko, etat, placa_pod, case when etat='adiunkt' then placa_pod*1.2 when etat='asystent' then placa_pod*1.1 when id_zesp=20 then placa_pod*1.4 end "po zapowiadanej podwyŝce" select c.zespol from (select case id_zesp when 10 then 'Administracja' when 20 then 'Systemy rozproszone' else 'Inny' end zespol from zespoly c; CASE w klauzuli FROM 25 26 Funkcja COALESCE wartością funkcji jest pierwsza niepusta wartość wyraŝenie z listy coalesce (wyraŝenie 1, wyraŝenie 2,, wyraŝenie n select coalesce(placa_dod, placa_pod, 0 jeŝeli wartość placa_dod nie jest pusta, funkcja zwróci jej wartość jeŝeli placa_dod jest pusta, a placa_pod nie jest pusta, funkcja zwróci wartość placa_pod jeŝeli obie płace są puste, funkcja zwróci 0 Funkcje tablicowe Funkcje zwracające kolekcje rekordów Wykorzystywane w zapytaniach jak tabele/perspektywy Zastosowanie: złoŝone transformacje danych, np. w procesie ETL Cechy udostępniają rekord juŝ w momencie jego wyznaczenia w funkcji przetwarzanie potokowe moŝliwość zrównoleglenia przetwarzania wykorzystują obiektowy model danych złoŝone typy danych uŝytkownika kolekcje 27 28 Funkcje tablicowe - przykład create or replace type employee_t as object ( name varchar2(20, job varchar2(15 create or replace type employee_collection as / CREATE OR REPLACE FUNCTION F_empl table of employee_t RETURN employee_collection / PIPELINED AS cursor c_emp is select ename, job from emp; rec_emp c_emp%rowtype; rec_out employee_t := employee_t(null, null; BEGIN open c_emp; loop fetch c_emp into rec_emp; exit when c_emp%notfound; rec_out.name:=rec_emp.ename; rec_out.job:=rec_emp.job; PIPE ROW (rec_out; end loop; return; select * from TABLE(F_empl(; END; Robert / Wrembel - Politechnika Poznańska, Instytut Informatyki 29