Instrukcje DML INSERT, UPDATE, DELETE. COPY

Podobne dokumenty
Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Konstruowanie Baz Danych DQL agregacja danych

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

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

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Podzapytania. Podzapytania nieskorelowane i skorelowane

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych. Polecenia SQL

Bazy danych Ćwiczenia projektowe

Wykład 5. SQL praca z tabelami 2

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

SQL (ang. Structured Query Language)

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 3.

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Komunikacja z bazą danych psql

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Bazy danych. Dr inż. Paweł Kasprowski

Przestrzenne bazy danych Podstawy języka SQL

Bazy Danych i Usługi Sieciowe

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

P o d s t a w y j ę z y k a S Q L

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wprowadzenie do języka SQL

Bazy danych i usługi sieciowe

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.

Relacyjne bazy danych. Podstawy SQL

Oracle PL/SQL. Paweł Rajba.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Język SQL, zajęcia nr 1

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

Projektowanie systemów baz danych

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

SQL 4 Structured Query Lenguage

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL w praktyce. Miłej i owocnej nauki!!!

Co to jest Baza Danych

Oracle PL/SQL. Paweł Rajba.

Wykład 05 Bazy danych

Autor: Joanna Karwowska

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Język SQL. Rozdział 2. Proste zapytania

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 3.

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Bazy danych 6. Klucze obce. P. F. Góra

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

SQL/MySQL. Rafał Kern

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

Aspekty aktywne baz danych

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Bazy danych - Materiały do laboratoriów VIII

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

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

Bazy danych 7. SQL podstawy

Bazy danych 10. SQL Widoki

Wyzwalacze (triggery) Przykład

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

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

Wykład 8. SQL praca z tabelami 5

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

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

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Pakiety podprogramów Dynamiczny SQL

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

Oracle PL/SQL. Paweł Rajba.

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

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Krzysztof Kadowski. PL-E3579, PL-EA0312,

BAZA DANYCH SIECI HOTELI

Bazy danych i usługi sieciowe

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Transkrypt:

Wprowadzenie do DML i DDL 1 Bazy Danych Wykład p.t. Instrukcje DML INSERT, UPDATE, DELETE. COPY Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano materiały: http: //www.postgresql.org/docs/8.3/interactive/index.html

Wprowadzenie do DML i DDL 2 DML Data Manipulation Language DML obejmuje instrukcje służące do wprowadzania trwałych zmian w bazie danych oraz dostępu do danych; są to instrukcje: INSERT INTO Ładowanie nowych danych (rekordów) do tabeli, UPDATE zmiana istniejących danych w tabeli, DELETE FROM kasowanie rekordów z tabeli, SELECT selektywny dostęp do danych. Niektóre podręczniki do języka DML zaliczaja tylko instrukcje powodujące trwałe zmiany stanu bazy (INSERT, UPDATE, DELETE, a instrukcję SELECT do Data Query Language (DQL). Instrukcje UPDATE oraz DELETE wykorzystują mechanizm selekcji rekordów analogiczny do instrukcji SELECT, oparty na warunkach zdefiniowanych w WHERE. Uwaga: Instrukcje UPDATE oraz DELETE bez podanych kryteriów wybory rekordów działają na całej tabeli. Wykonane zmiany są nieodwracalne.

Wprowadzenie do DML i DDL 3 INSERT INTO INSERT INTO table [ ( column [,...] ) ] { DEFAULT VALUES VALUES ( { expression DEFAULT } [,...] ) [,...] query } [ RETURNING * output_expression [ AS output_name ] [,...] ] table nazwa tablicy, column nazwa kolumny, VALUES deklaruje listę wartości dla wstawianego rekordu, DEFAULT VALUES kolumny będą wypełnione wartościami defaultowymi, expression dana kolumna będzie wypełniona wartością wyrażenia, DEFAULT wypełnienie kolumny wartością defaultową, query sapytanie wyznaczające wstawiane rekordy, output_expression zwracane wyrażenie (po każdym insercie).

Wprowadzenie do DML i DDL 4 INSERT INTO pełny rekord Wprowadzamy pełny rekord nie specyfikując kolumn: pracownicy=> \d pra Table "public.pra" Column Type Modifiers ------------+-----------------------+----------- id_prac character(5) nazwisko character varying(32) imie character varying(16) dzial character(5) stanowisko character varying(24) pobory numeric(8,2) (5 rows)

Wprowadzenie do DML i DDL 5 pracownicy=> INSERT INTO pra VALUES ( 100, Janik, Jan, PK101, analityk,5000); INSERT 0 1 100 Janik Jan PK101 analityk 5000.00 (6 rows)

Wprowadzenie do DML i DDL 6 INSERT INTO niepełny rekord 100 Janik Jan PK101 analityk 5000.00 (6 rows) pracownicy=> INSERT INTO pra VALUES ( 101, Janiak, Jan, PK101, analityk ); INSERT 0 1 100 Janik Jan PK101 analityk 5000.00 101 Janiak Jan PK101 analityk (7 rows) Niepełne rekordy (bez specyfikacji kolumn) nie są dopuszczalne w standardzie SQL.

Wprowadzenie do DML i DDL 7 INSERT INTO pełna specyfikacja kolumn (5 rows) pracownicy=> INSERT INTO pra (id_prac,nazwisko,imie,dzial,stanowisko,pobory) VALUES ( 100, Janik, Jan, PK101, analityk,5000); INSERT 0 1 100 Janik Jan PK101 analityk 5000.00 (6 rows)

Wprowadzenie do DML i DDL 8 INSERT INTO konsekwentna zmiana kolejności kolumn (5 rows) pracownicy=> INSERT INTO pra (nazwisko,imie,dzial,stanowisko,pobory,id_prac) VALUES ( Janik, Jan, PK101, analityk,5000, 100 ); INSERT 0 1 100 Janik Jan PK101 analityk 5000.00 (6 rows) Przy zmianie kolejności kolumn należy również zmienić kolejność danych.

Wprowadzenie do DML i DDL 9 INSERT INTO niepełna specyfikacja kolumn (5 rows) pracownicy=> INSERT INTO pra (id_prac,nazwisko,imie,dzial) VALUES ( 100, Janik, Jan, PK101 ); INSERT 0 1 100 Janik Jan PK101 (6 rows) Kolumny niewyspecyfikowane będą wypełniane wartościami defaultowymi.

Wprowadzenie do DML i DDL 10 INSERT INTO jawna specyfikacja DEFAULT i NULL (5 rows) pracownicy=> INSERT INTO pra (id_prac,nazwisko,imie,dzial,stanowisko,pobory) VALUES ( 100, Janik, Jan,DEFAULT,NULL,2000); INSERT 0 1 100 Janik Jan 2000.00 (6 rows)

Wprowadzenie do DML i DDL 11 INSERT INTO wprowadzanie wielu rekordów (5 rows) pracownicy=> INSERT INTO pra (id_prac,nazwisko,imie,dzial,stanowisko,pobory) VALUES ( 100, Janik, Jan, PK101, analityk,5000), ( 101, Janiak, Jerzy, PR202, projektant,6000); INSERT 0 2 100 Janik Jan PK101 analityk 5000.00 101 Janiak Jerzy PR202 projektant 6000.00 (7 rows)

Wprowadzenie do DML i DDL 12 INSERT INTO z SELECT Możliwe jest załadowanie do tablicy rekordów utworzonych instrukcją SELECT. (5 rows) pracownicy=> INSERT INTO pra (id_prac,nazwisko,imie,dzial,stanowisko,pobory) SELECT id_prac,nazwisko,imie,dzial,stanowisko,pobory FROM prac WHERE nazwisko LIKE J% ; INSERT 0 2 100 Janik Jan PK101 analityk 5000.00 102 Janiak Jerzy PK101 analityk 6000.00 (7 rows)

Wprowadzenie do DML i DDL 13 INSERT INTO z SELECT: forma uproszczona ---------+----------+------+-------+------------+-------- (0 rows) ---------+------------+----------+-------+------------+------- pracownicy=> INSERT INTO pra SELECT id_prac,nazwisko,imie,dzial,stanowisko,pobory FROM prac; INSERT 0 9 1100 Kowal Adam PD303 robotnik 1500.0 110 Kowalik Artur PD303 kierownik 1500.0 1110 Kowalewski Adam PR202 robotnik 3500.0 101 Kowalczyk Amadeusz PK101 kierownik 1000.0 1101 Kowalski Antoni PD303 robotnik 4500.0 1011 Kowalowski Alojzy PK101 robotnik 2500.0 111 Kowalczuk Adam PR202 kierownik 2500.0 1010 Kawula Alojzy PK101 robotnik 2500.0 102 Janiak Jerzy PK101 analityk 6000.0 (9 rows)

Wprowadzenie do DML i DDL 14 INSERT INTO podsumowanie INSERT INTO to podstawowa instrukcja do wprowadzania danych do tabel. wprowadzane rekordy specyfikowane są po słowie VALUES, możliwe jest wprowadzanie 1 lub wielu rekordów, przy wprowadzaniu danych bez jawnej specyfikacji kolumn należy podać wszystkie wartości pól w odpowiedniej liczbie i kolejności (PostgreSQL dopuszcza krótszą listę wartości), bezpieczna forma INSERT posiada jawną specyfikację wartości, jawna specyfikacja wartości pozwala na: zmianę kolejności pól, pominięcie pewnych kolumn, w specyfikacji pól możliwe jest użycie słów DEFAULT oraz NULL, wprowadzanie wartości NULL jest możliwe poprzez: jawne podanie wartości NULL, pominięcie specyfikacji kolumny i nazwy, pusty łańcuch ( ), NULL oraz NULL to różne wartości, znaki specjalne, np. poprzedzamy \. nie należy w prowadzać wartości do kolumn typu serial są one wprowadzane automatycznie.

Wprowadzenie do DML i DDL 15 SELECT INTO SELECT INTO tworzy nową tabelę korzystając z kolumn i danych istniejącej tabeli. pracownicy=> \dt List of relations Schema Name Type Owner --------+-------+-------+------- public dzial table ali public pra table ali public prac table ali (3 rows) pracownicy=> SELECT * INTO new_pra FROM pra; SELECT pracownicy=> \dt List of relations Schema Name Type Owner --------+---------+-------+------- public dzial table ali public new_pra table ali public pra table ali public prac table ali (4 rows) pracownicy=> select * from new_pra; ---------+------------+----------+-------+------------+------- 1100 Kowal Adam PD303 robotnik 1500.0 110 Kowalik Artur PD303 kierownik 1500.0 1110 Kowalewski Adam PR202 robotnik 3500.0 101 Kowalczyk Amadeusz PK101 kierownik 1000.0 1101 Kowalski Antoni PD303 robotnik 4500.0

Wprowadzenie do DML i DDL 16 1011 Kowalowski Alojzy PK101 robotnik 2500.0 111 Kowalczuk Adam PR202 kierownik 2500.0 1010 Kawula Alojzy PK101 robotnik 2500.0 102 Janiak Jerzy PK101 analityk 6000.0 (9 rows)

Wprowadzenie do DML i DDL 17 UPDATE UPDATE pozwala na modyfikację zawartości istniejących rekordów. UPDATE [ ONLY ] table [ [ AS ] alias ] SET { column = { expression DEFAULT } ( column [,...] ) = ( { expression DEFAULT } [,...] ) } [,...] [ FROM fromlist ] [ WHERE condition ] [ RETURNING * output_expression [ AS output_name ] [,...] ] table tabela w której wprowadzane są zmiany, FROM wprowadzenie kolumn z innych tabel do WHERE, WHERE specyfikacja zmiennych rekordów, DEFAULT wartość defaultową.

Wprowadzenie do DML i DDL 18 UPDATE ---------+-----------+----------+-------+------------+-------- 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 (6 rows) ---------+-----------+----------+-------+------------+-------- pracownicy=> UPDATE pra SET pobory = pobory*1.2 WHERE stanowisko= kierownik ; UPDATE 3 110 Kowalik Artur PD303 kierownik 1800.00 101 Kowalczyk Amadeusz PK101 kierownik 1200.00 111 Kowalczuk Adam PR202 kierownik 3000.00 (6 rows)

Wprowadzenie do DML i DDL 19 UPDATE testowanie UPDATE wprowadza trwałe zmiany w tabeli. Bezpiecznie jest przetestować jego zakres i efekty. ---------+-----------+----------+-------+------------+-------- pracownicy=> SELECT * FROM pra; 110 Kowalik Artur PD303 kierownik 1800.00 101 Kowalczyk Amadeusz PK101 kierownik 1200.00 111 Kowalczuk Adam PR202 kierownik 3000.00 (6 rows) Definiujemy warunek wyboru: pracownicy=> SELECT * FROM pra WHERE dzial= PD303 ; ---------+----------+--------+-------+------------+--------- 110 Kowalik Artur PD303 kierownik 1800.00 (3 rows) Przerabiamy SELECT na UPDATE: pracownicy=> UPDATE pra SET pobory=pobory+1234 WHERE dzial= PD303 ; UPDATE 3 pracownicy=> SELECT * FROM pra; ---------+-----------+----------+-------+------------+--------

Wprowadzenie do DML i DDL 20 101 Kowalczyk Amadeusz PK101 kierownik 1200.00 111 Kowalczuk Adam PR202 kierownik 3000.00 1100 Kowal Adam PD303 robotnik 2734.00 1101 Kowalski Antoni PD303 robotnik 5734.00 110 Kowalik Artur PD303 kierownik 3034.00 (6 rows)

Wprowadzenie do DML i DDL 21 DELETE FROM kasowanie rekordów DELETE FROM [ ONLY ] table [ [ AS ] alias ] [ USING usinglist ] [ WHERE condition WHERE CURRENT OF cursor_name ] [ RETURNING * output_expression [ AS output_name ] [,...] ] ONLY gdy wyspecyfikowane, zmiany odnoszą się tylko do bieżacej tablicy; jeżeli nie, również do tabel dziedziczących. USING pozwala na specyfikację tablic z których kolumny można użyć w WHERE,

Wprowadzenie do DML i DDL 22 ---------+-----------+----------+-------+------------+-------- 101 Kowalczyk Amadeusz PK101 kierownik 1200.00 111 Kowalczuk Adam PR202 kierownik 3000.00 1100 Kowal Adam PD303 robotnik 2734.00 1101 Kowalski Antoni PD303 robotnik 5734.00 110 Kowalik Artur PD303 kierownik 3034.00 (6 rows) pracownicy=> DELETE FROM pra WHERE nazwisko LIKE Kowal% ; DELETE 5 ---------+----------+--------+-------+------------+--------- (1 row)

Wprowadzenie do DML i DDL 23 DELETE stosowanie DELETE wprowadza trwałe zmiany w tabeli. Bezpiecznie jest przetestować jego zakres. ---------+-----------+----------+-------+------------+-------- pracownicy=> SELECT * FROM pra; 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 (6 rows) Testujemy kryterium wyboru: pracownicy=> SELECT * FROM pra WHERE id_prac = 111 ; ---------+-----------+------+-------+------------+--------- (1 row) Przerabiamy SELECT na DELETE: pracownicy=> DELETE FROM pra WHERE id_prac = 111 ; DELETE 1 pracownicy=> SELECT * FROM pra; ---------+-----------+----------+-------+------------+-------- 101 Kowalczyk Amadeusz PK101 kierownik 1000.00

Wprowadzenie do DML i DDL 24 (5 rows)

Wprowadzenie do DML i DDL 25 TRUNCATE efektywne kasowanie zawartości tabeli W PostgreSQL efektywne kasowanie zawartości tabeli można uzyskać instrukcją TRUNCATE. TRUNCATE [ TABLE ] name [,...] [ CASCADE RESTRICT ] TRUNCATE efektywne dla dużych tabel. Odzyskuje pamięć. Może opróżniać wiele tabel na raz. CASCADE kaskadowe usuwanie powiązanych rekordów,a więc czyczenie tabel podrzędnych zawierających klucze obce, RESTRICT zapobiega usuwaniu zawartości tabel, jeżeli są do nich referencje z tabel podrzędnych. ---------+-----------+----------+-------+------------+-------- pracownicy=> SELECT * FROM pra; 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 (5 rows) pracownicy=> TRUNCATE pra; TRUNCATE TABLE pracownicy=> SELECT * FROM pra; ---------+----------+------+-------+------------+-------- (0 rows)

Wprowadzenie do DML i DDL 26 COPY FROM, COPY TO Instrukcje COPY w wersji PostgreSQL 8.3. COPY tablename [ ( column [,...] ) ] FROM { filename STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] delimiter ] [ NULL [ AS ] null string ] [ CSV [ HEADER ] [ QUOTE [ AS ] quote ] [ ESCAPE [ AS ] escape ] [ FORCE NOT NULL column [,...] ] COPY { tablename [ ( column [,...] ) ] ( query ) } TO { filename STDOUT } [ [ WITH ] [ BINARY ] [ HEADER ] [ OIDS ] [ DELIMITER [ AS ] delimiter ] [ NULL [ AS ] null string ] [ CSV [ HEADER ] [ QUOTE [ AS ] quote ] [ ESCAPE [ AS ] escape ] [ FORCE QUOTE column [,...] ]

Wprowadzenie do DML i DDL 27 Instrukcje COPY w wersji PostgreSQL 7.3. COPY [ BINARY ] tablename [ WITH OIDS ] FROM { filename STDIN } [ [USING] DELIMITERS delimiter ] [ WITH NULL AS null string ] COPY [ BINARY ] tablename [ WITH OIDS ] TO { filename STDOUT } [ [USING] DELIMITERS delimiter ] [ WITH NULL AS null string ] Instrukcja COPY wymaga uprawnień administratora.

Wprowadzenie do DML i DDL 28 Instrukcja psql copy Instrukcja \copy jest poleceniem psql. Nie wymaga uprawnień administratora. Pozwala kopiować do i z plików. \copy { table [ ( column_list ) ] ( query ) } { from to } { filename stdin stdout pstdin pstdou [ with ] [ binary ] [ oids ] [ delimiter [ as ] character [ null [ as ] string ] [ csv [ header ] [ quote [ as ] character ] [ escape [ as ] character ] [ force quote column_list ] [ force not null column_list ---------+-----------+----------+-------+------------+-------- 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 (6 rows) \copy pra to pra.csv with csv header id_prac,nazwisko,imie,dzial,stanowisko,pobory 1100,Kowal,Adam,PD303,robotnik,1500.00 110,Kowalik,Artur,PD303,kierownik,1500.00 101,Kowalczyk,Amadeusz,PK101,kierownik,1000.00 1101,Kowalski,Antoni,PD303,robotnik,4500.00 111,Kowalczuk,Adam,PR202,kierownik,2500.00 1010,Kawula,Alojzy,PK101,robotnik,2500.00

Wprowadzenie do DML i DDL 29 Plik tekstowy w formacie CSV (bez nagłówka): 1100,Kowal,Adam,PD303,robotnik,1500.00 110,Kowalik,Artur,PD303,kierownik,1500.00 101,Kowalczyk,Amadeusz,PK101,kierownik,1000.00 1101,Kowalski,Antoni,PD303,robotnik,4500.00 111,Kowalczuk,Adam,PR202,kierownik,2500.00 1010,Kawula,Alojzy,PK101,robotnik,2500.00 pracownicy=> truncate pra; TRUNCATE TABLE ---------+----------+------+-------+------------+-------- (0 rows) pracownicy=> \copy pra from pra-no-header.csv using delimite ---------+-----------+----------+-------+------------+-------- 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 (6 rows)

Wprowadzenie do DML i DDL 30 Kopiowanie uwagi format CSV wartości (pola) oddzielone przecinkami; mozliwe inne separatory, standardowym separatorem jest znak tabulacji, mozliwy znak separatora potok, opcaj WITH NULL AS pozwala zdefiniować ciąg znaków, który będzie interpretowany jako NULL, domyslnie jako NULL jest interpretowany ciąg \N, ważne: czystość danych, ważne: pola daty, ważne: kolejność i kompletność kolumn.