Psql a Emacs: Porovnání verzí

Z GeoWikiCZ
(Zacatek editace odstavce o Emacsu a SQL pro pokrocile)
Řádek 54: Řádek 54:


== Emacs ==
== Emacs ==
=== Emacs - Rychlý přehled ===


# M-x sql-postgres
# M-x sql-postgres
Řádek 75: Řádek 77:
<tt>C-c C-h</tt>
<tt>C-c C-h</tt>
:nápověda
:nápověda
=== Emacs - Podrobný popis ===
==== Připojení k databázi ====
Po spuštění <tt>emacs</tt>u je nutné připojit se k databázi. Příkaz '''sql-postgres''' se přípojí k databázi a vytvoří buffer s názvem '''*SQL*''' ve kterém
se zobrazuje interakce s (na pozadí spuštěným procesem) ''psql''.
M-x sql-postgres
Po spuštění této funkce je uživel vyzván k vyplnění údajů o serveru a názvu databáze. Pro připojení ke cvičné školní databázi ''ocdl'' se vyplní pouze název databáze. Jestliže se chceme připojit k databázi pod jiným uživatelem než po uživatelem který spustil instanci emacsu (např. pokud jsem přihlášen na serveru jako uživatel pytel, sql-postgres automaticky předpokládá že se budu k databázi hlásit jakou databázový uživatel pytel). Toto lze změnit nastavením parametrů při
spuštění procesu psql z emacsu. Do souboru ~/.emacs je nutno dopsat:
  (setq sql-postgres-options '("-Uhonza" "-P")) ;; hodlam se prihlasit jakou uzivatel honza s heslem
Nyní bude sql-postgres předpokládat že se hodláme hlásit jako uživatel honza s použitím hesla. Existují další proměnné které nám urychlují připojení k databázi
přes sql-postgres:
 
  (setq sql-server "localhost") ;; prihlasuji se nejcasteji k localhostu
  (setq sql-database "test")    ;; pouzivam databazi test
Výše uvedená nastavení se nám defaultně zobrazí při připojování k databázi, tato nastavení můžeme explicitně měnit.
Po spuštění sql-postgres se nám otevře buffer v kterém můžeme pracovat stejně jako v SQL monitoru '''psql'''. Klávesou RET
(v Emacsovské terminologii klávesa Enter) odešleme příkaz. Důležité klávesové zkratky:
<tt>RET &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comint-send-input</tt>
:odeslání vstupu
<tt>C-up</tt>,  <tt>C-c C-p &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comint-previous-input</tt>
:listování v historii směrem dozadu
<tt>C-down</tt>, <tt>C-c c-n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comint-next-input</tt>
:listování v historii směrem dopředu
==== Otevření sql souboru ====
Pro práci s databází postgresql z prostředí systému Emacsu je však lépe komunikovat přes soubor který si po otevření '''*SQL*''' bufferu otevřeme. Soubor
může mít libovolné jméno a příponu '''.sql''' (např. ''hodina4.sql''). Tento soubor můžeme např. průběžně ukládat, procházet obsah souboru a spouštět
opakovaně již zadané dotazy. Praktické je zakládání souborů dle jednotlivých cvičení (cviceni1.sql, cviceni2.sql, ...).
Pokud hodláme odesílat dotazy pro databázi přes sql soubor je ideální si otevřít v Emacsu dvě okna. První okno bude obsahovat *SQL* buffer a druhé okno
daný sql soubor. Pokud máme v okně pouze *SQL* buffer, je zde několik možností jak otevřít sql soubor:
# Okno rozdělíme na dvě horizontální okna klávesovou zkratkou <tt>C-x 2</tt> a v jednom z oken (mezi okny se přechází klávesovou zkratkou <tt>C-x o</tt>) a následně otevřeme soubor klávesovou zkratkou <tt>C-x C-f</tt> (pokud soubor neexistuje, je vytvořen nový)
# Pokud hodláme rozdělit okna vertikálně (což se mi zdá velmi výhodné), použijeme stejný postup jako v bodě jedna, pouze pro rozdělení oken použijeme klávesovou zkratku <tt>C-x 3</tt>.
# Rozdělení okna a otevření souboru provedeme v jednom kroku pomocí klávesové zkratky <tt>C-x 4 C-f</tt>.
V nově otevřeném souboru můžeme psát SQL příkazy a odesílat je do *SQL* bufferu pomocí klávesových zkratek:
<tt>C-c C-c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql-send-paragraph</tt>
:spustí příkazy běžného odstavce (odstavce jsou odděleny alespoň  jedním prázdnám řádkem)
<tt>C-c C-b &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql-send-buffer</tt>
::provede všechny příkazy z celého bufferu
<tt>C-c C-r &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql-send-region</tt>
:provede všechny příkazy z daného bloku (sql-send-region)
==== Barevné znázornění syntaxe ====
Barevné znázornění syntaxe pro SQL příkazy otevřeného sql souboru lze provést příkazem <tt>font-lock-mode</tt>: <tt>M-x font-lock-mode</tt>.
Pokud barevné znázornění syntaxe chceme mít implicitně zapnuté musíme do souboru <tt>.emacs</tt> zapsat jednu z následujících řádek
 
  (global-font-lock-mode t) ;; chci mit vsechny mody se znazornenou barevnou syntaxi
  (add-hook 'sql-mode-hook '(lambda () (font-lock-mode 1))) ;; pouze pro sql mod
 


=== Některé další užitečné příkazy Emacsu ===
=== Některé další užitečné příkazy Emacsu ===

Verze z 18. 3. 2007, 18:09

Psql

Psql je klientská aplikace pro interaktivní přístup k databázovému systému PostgreSQL.

psql [ volby... ] [ jméno_db [ uživatel ] ]

Za normálních okolností vypisuje psql jako prompt jméno připojené databáze následované řetězcem =>. Například

$ psql testdb
Welcome to psql 7.4beta5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

testdb=>

Některé administrativní příkazy psql

\cd [adresář]

Změní běžný pracovní adresář na hodnotu zadaného argumentu. Bez argumentu změní pracovní adresář na uživatelův domovský adresář.

\connect (nebo \c) [jméno_db [uživatel]]

Zajistí připojení k nové databázi anebo uživatelskému jménu.

\d [pattern]

Pro každý vzor (pattern) zobrazí všechny odpovídající relace (tabulku, view, indexy, sekvence).

\dn [pattern]

Zobrazí všechna dostupná schémata (prostory jmen - namespaces). Pokud je uveden vzor (regulární výraz), zobrazí pouze schémata odpovídající uvedenému vzoru (pattern).

\dt [pattern]

Zobrazí všechny tabulky nebo tabulky odpovídající uvedenému vzoru.

\du [pattern]

Zobrazí všechny databázové uživatele nebo uživatel odpovídající uvedenému vzoru.

\help (nebo \h) [příkaz]

Zobrazí syntax uvedeného SQL příkazu. Není-li uveden, zobrazí všechny příkazy pro které je syntaktická nápověda k dispozici.

\i soubor

Čte vstup ze zadaného souboru, stejně jako by byl zadáván z klávesnice.

\q

Ukončí program psql.

\r

Resetuje (vymaže) buffer dotazů.

\?

Zobrazí nápovědu escape příkazů.

Emacs

Emacs - Rychlý přehled

  1. M-x sql-postgres
  2. Server:
  3. Database:

... dále stejně/obdobně jako v psql, pouze nefunguje doplňování pomocí klávesy tab (Emacs sql-mode obdobně nabízí i připojení k databázovým systémům db2, informix, oracle, sybase, ingres, interbase a mysql).

Jestliže nyní oteveřeme soubor s příponou sql (resp. je-li dané okno v sql-modu), pak můžeme zapsané sql příkazy posílat ke zpracování klientovi psqml ve druhém okně.

C-c C-c        sql-send-paragraph

spustí příkazy běžného odstavce (odstavce jsou odděleny alespoň jedním prázdnám řádkem)

C-c C-r        sql-send-region

provede všechny příkazy z daného bloku (sql-send-region)

C-c C-b        sql-send-buffer

provede všechny příkazy z celého bufferu

C-c C-h

nápověda


Emacs - Podrobný popis

Připojení k databázi

Po spuštění emacsu je nutné připojit se k databázi. Příkaz sql-postgres se přípojí k databázi a vytvoří buffer s názvem *SQL* ve kterém se zobrazuje interakce s (na pozadí spuštěným procesem) psql.

M-x sql-postgres

Po spuštění této funkce je uživel vyzván k vyplnění údajů o serveru a názvu databáze. Pro připojení ke cvičné školní databázi ocdl se vyplní pouze název databáze. Jestliže se chceme připojit k databázi pod jiným uživatelem než po uživatelem který spustil instanci emacsu (např. pokud jsem přihlášen na serveru jako uživatel pytel, sql-postgres automaticky předpokládá že se budu k databázi hlásit jakou databázový uživatel pytel). Toto lze změnit nastavením parametrů při spuštění procesu psql z emacsu. Do souboru ~/.emacs je nutno dopsat:

  (setq sql-postgres-options '("-Uhonza" "-P")) ;; hodlam se prihlasit jakou uzivatel honza s heslem

Nyní bude sql-postgres předpokládat že se hodláme hlásit jako uživatel honza s použitím hesla. Existují další proměnné které nám urychlují připojení k databázi přes sql-postgres:

  (setq sql-server "localhost") ;; prihlasuji se nejcasteji k localhostu
  (setq sql-database "test")    ;; pouzivam databazi test

Výše uvedená nastavení se nám defaultně zobrazí při připojování k databázi, tato nastavení můžeme explicitně měnit.


Po spuštění sql-postgres se nám otevře buffer v kterém můžeme pracovat stejně jako v SQL monitoru psql. Klávesou RET (v Emacsovské terminologii klávesa Enter) odešleme příkaz. Důležité klávesové zkratky:

RET        comint-send-input

odeslání vstupu

C-up, C-c C-p        comint-previous-input

listování v historii směrem dozadu

C-down, C-c c-n        comint-next-input

listování v historii směrem dopředu

Otevření sql souboru

Pro práci s databází postgresql z prostředí systému Emacsu je však lépe komunikovat přes soubor který si po otevření *SQL* bufferu otevřeme. Soubor může mít libovolné jméno a příponu .sql (např. hodina4.sql). Tento soubor můžeme např. průběžně ukládat, procházet obsah souboru a spouštět opakovaně již zadané dotazy. Praktické je zakládání souborů dle jednotlivých cvičení (cviceni1.sql, cviceni2.sql, ...).

Pokud hodláme odesílat dotazy pro databázi přes sql soubor je ideální si otevřít v Emacsu dvě okna. První okno bude obsahovat *SQL* buffer a druhé okno daný sql soubor. Pokud máme v okně pouze *SQL* buffer, je zde několik možností jak otevřít sql soubor:

  1. Okno rozdělíme na dvě horizontální okna klávesovou zkratkou C-x 2 a v jednom z oken (mezi okny se přechází klávesovou zkratkou C-x o) a následně otevřeme soubor klávesovou zkratkou C-x C-f (pokud soubor neexistuje, je vytvořen nový)
  2. Pokud hodláme rozdělit okna vertikálně (což se mi zdá velmi výhodné), použijeme stejný postup jako v bodě jedna, pouze pro rozdělení oken použijeme klávesovou zkratku C-x 3.
  3. Rozdělení okna a otevření souboru provedeme v jednom kroku pomocí klávesové zkratky C-x 4 C-f.

V nově otevřeném souboru můžeme psát SQL příkazy a odesílat je do *SQL* bufferu pomocí klávesových zkratek:

C-c C-c        sql-send-paragraph

spustí příkazy běžného odstavce (odstavce jsou odděleny alespoň jedním prázdnám řádkem)

C-c C-b        sql-send-buffer

provede všechny příkazy z celého bufferu

C-c C-r        sql-send-region

provede všechny příkazy z daného bloku (sql-send-region)

Barevné znázornění syntaxe

Barevné znázornění syntaxe pro SQL příkazy otevřeného sql souboru lze provést příkazem font-lock-mode: M-x font-lock-mode. Pokud barevné znázornění syntaxe chceme mít implicitně zapnuté musíme do souboru .emacs zapsat jednu z následujících řádek

 (global-font-lock-mode t) ;; chci mit vsechny mody se znazornenou barevnou syntaxi
 (add-hook 'sql-mode-hook '(lambda () (font-lock-mode 1))) ;; pouze pro sql mod
 

Některé další užitečné příkazy Emacsu

M-x font-lock-mode

barevné zvýraznění syntaxe

M-u

převede následující slovo na velká písmena

M-l

převede následující slovo na malá písmena

Podívejte se také na