Psql a Emacs: Porovnání verzí
m →Emacs |
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 comint-send-input</tt> | |||
:odeslání vstupu | |||
<tt>C-up</tt>, <tt>C-c C-p comint-previous-input</tt> | |||
:listování v historii směrem dozadu | |||
<tt>C-down</tt>, <tt>C-c c-n 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 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 sql-send-buffer</tt> | |||
::provede všechny příkazy z celého bufferu | |||
<tt>C-c C-r 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
- M-x sql-postgres
- Server:
- 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:
- 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ý)
- 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.
- 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