---------------------------------------------------------------------------
-- SQL w praktyce. Jak dzięki danym uzyskiwać cenne informacje. Wydanie II
-- Anthony DeBarros

-- Rozdział 18. Przykłady z kodem
----------------------------------------------------------------------------


-- Łączenie się z bazą danych na serwerze lokalnym za pomocą narzędzia psql

psql -d [nazwa_bazy_danych] -U [nazwa_użytkownika]
psql -d analysis -U postgres

-- Łączenie się z bazą danych na serwerze zdalnym za pomocą narzędzia psql

psql -d [nazwa_bazy_danych] -U [nazwa_użytkownika] -h [nazwa_hosta]
psql -d analysis -U postgres -h przyklad.com

-- Zmiana nazwy użytkownika i nazwy bazy danych

\c [nazwa_bazy_danych] [nazwa_użytkownika]
\c test
\c test nazwa_użytkownika

-- Format pliku haseł (pgpass.conf w systemie Windows; .pgpass w systemach macOS i Linux)
nazwa_hosta:port:baza_danych:nazwa_użytkownika:hasło


-- Listing 18.1: Wprowadzanie w narzędziu psql zapytanie jednowierszowego
-- W wierszu poleceń narzędzia psql wprowadź następującą instrukcję:

SELECT county_name FROM us_counties_pop_est_2019 ORDER BY county_name LIMIT 3;

-- Listing 18.2: Wprowadzanie w narzędziu psql zapytania z wieloma wierszami
-- Po wprowadzeniu każdego wiersza naciśnij klawisz Enter

SELECT county_name
FROM us_counties_pop_est_2019
ORDER BY county_name
LIMIT 3;

-- Listing 18.3: Wyświetlanie w obrębie symbolu zachęty narzędzia psql znaku otwierającego nawiasu okrągłego

CREATE TABLE wineries (
id bigint,
winery_name text
);

-- Listing 18.4: Zapytanie z wynikami wymagającymi przewijania

SELECT county_name FROM us_counties_pop_est_2019 ORDER BY county_name;

-- Listingi 18.5 i 18-6: Normalny i rozszerzony wariant wyświetlania wyników zapytania dotyczącego tabeli grades
-- Użyj \x do włączania i wyłączania wariantu rozszerzonego

SELECT * FROM grades ORDER BY student_id, course_id;

-- Listing 18.7: Importowanie danych za pomocą polecenia \copy

DELETE FROM state_regions;

\copy state_regions FROM 'C:\TwojKatalog\state_regions.csv' WITH (FORMAT CSV, HEADER);


-- Listing 18.8: Importowanie danych za pomocą narzędzia psql i polecenia COPY

DELETE FROM state_regions;

psql -d analysis -U postgres -c "COPY state_regions FROM STDIN WITH (FORMAT CSV, HEADER);" < C:\TwojKatalog\state_regions.csv


-- Listing 18.9: Zapisywanie w pliku danych wynikowych zapytania

-- Określ ustawienia narzędzia psql
\pset format csv

-- Zapytanie będzie następujące:
SELECT * FROM grades ORDER BY student_id, course_id;

-- Skonfigurowanie narzędzia psql pod kątem zwracania wyników
-- Zauważ, że użytkownicy systemu Windows muszą użyć w tym poleceniu ukośnik prawy,
-- co stanowi wariant inny niż standardowy.
\o 'C:/TwojKatalog/query_output.csv'

-- Uruchom zapytanie i uzyskaj dane wynikowe
SELECT * FROM grades ORDER BY student_id, course_id;


-- DODATKOWE NARZĘDZIA Z WIERSZEM POLECEŃ


-- createdb: tworzy bazę danych o nazwie box_office

createdb -U postgres -e box_office

-- Ładowanie plików shapefile do systemu PostgreSQL

-- Dotyczy pliku shapefile danych dotyczących spisu ludności hrabstw Stanów Zjednoczonych z rozdziału 15.:
shp2pgsql -I -s 4269 -W Latin1 tl_2019_us_county.shp us_counties_2019_shp | psql -d analysis -U postgres

-- For the Santa Fe roads and waterways shapfiles in Chapter 15:
-- Dotyczy plików shapefile danych dotyczących dróg lądowych i wodnych hrabstwa Santa Fe z rozdziału 15.:
shp2pgsql -I -s 4269 tl_2019_35049_roads.shp santafe_roads_2019 | psql -d analysis -U postgres
shp2pgsql -I -s 4269 tl_2019_35049_linearwater.shp santafe_linearwater_2019 | psql -d analysis -U postgres

