Webový zápisník | JAZBY.net
Vítejte na mém webu!

PHP seriál - Výpis struktury tabulky v Postgre a MySQL (DESCRIBE table)

V práci jsem narazil na jeden problém. Potřeboval jsem udělat příkaz DESCRIBE table (výpis struktury tabulky v jazyce SQL), ale tak aby to chápalo PgSQL(postgre). Zjistil jsem, že toto není standartně podporovaný příkaz. Začal jsem tedy brouzdat po internetu ale nenarazil jsem na nic, co by mi pomohlo. Po delším bádání vám přináším alternativu, která funguje.

Takže nebudu vás napínat. Jde o tohle. Jak jsem řekl, describe table nezná systém postgre. V MySQL je zase problém, že describe nevypisuje k buňkám komentáře. Může vám to připadat jako zbytečná věc, ale třeba jsem je potřeboval. Stavím (programuji) totiž třídu, která umožní komunikovat univerzálně mezi databázemi Postgre a MySQL. Je jedno jakým způsobem napíšete SQL dotaz, třída si ho sama upraví pro odpovídající systém. Určitě by to pár lidí využilo. A jelikož myšlenkou té třídy bylo, aby vkládání i aktualizace záznamů šli jednoduše a bez nutnosti neustále něco přepisovat, když změním kolonku v databázi, přidal jsem funkci auto_insert a auto_update. Problém, kdy jsem začal potřebovat komentáře byl když zaznamenávám u aktualizace i hostorii změn. Sloupce se většinou nepojmenovávají moc česky a ve výpisu historie aktualizací to pak vypadá divně. Proto název který se zobrazí se zapíše do komentáře a je to. Nu ale dost obecných řečiček. Pokud by o tu třídu někdo měl zájem, napište mi do komentářů a nějak se domluvíme. Je zatím ve vývoji, tak volně k dispozici zatím není. 

Příkaz pro MySQL, který vypíše strukturu tabulky i s komentářem:

SELECT
    `COLUMN_NAME` AS `Field`, `COLUMN_TYPE` AS `Type`,
    `IS_NULLABLE` AS `Null`, `COLUMN_KEY` AS `Key`,
    `COLUMN_DEFAULT` AS `Default`,
    `EXTRA` AS `Extra`, `COLUMN_COMMENT` AS `Comment`
  FROM COLUMNS
  WHERE `table_schema` = 'databaze' AND `table_name` = 'tabulka';


Místo Databáze a Tabulka napiste vaše údaje. SQL dotaz vykonejte na připojené databázi information_schema.

Příkaz pro PgSQL, který vypíše strukturu tabulky (také s komentářem):

SELECT
    a.attname AS Field, format_type(a.atttypid, a.atttypmod) as Type,
    a.attnotnull AS Null, adef.adsrc AS Key, description as Comment
  FROM pg_attribute a LEFT JOIN pg_attrdef adef ON a.attrelid=adef.adrelid AND
    a.attnum=adef.adnum LEFT JOIN pg_type t ON a.atttypid=t.oid
    LEFT JOIN pg_description d ON (a.attrelid = d.objoid AND a.attnum = d.objsubid)
  WHERE a.attrelid = (SELECT oid FROM pg_class WHERE relname='tabulka')
    AND a.attnum > 0
  ORDER BY a.attnum;



Pro Postgre je dotaz krapet složitější, ale je to plně funkční. Pokud někdo zná jednodušší variantu, dejte mi vědět ;-).

««« Předchozí text: PHP seriál od A do Z - Lekce třetí - Programovací prostředí Následující text: Valentýna bych zrušíl, aneb Nemám rád dnešní proamerický svět »»»

autor: Honzííík | Čtvrtek 7. 02. 2008, 21.49 | tisk | Internet, PHP | 3 komentáře | 20876x

Komentáře k textu

Rss komentářů tohoto textu - Formulář pro nový komentář

reaguj[1] Lukin moje varianta

Já používám na výpis struktury tabulky příkaz „\d nazev_tabulky;“ v PuTTy funguje skvěle. (pgsql)

Pátek 30. 07. 2010, 14.19
reaguj[2] web Jazby

[1] Lukin: V Putty sice ano, ale pokud pak pracuješ pomocí např PHP s databázovou třídou, tak je ti \d k ničemu ;-). Já to potřeboval tehdy právě k sestavení databázového objektu, který se strukturou tabulky pracuje.

Pondělí 9. 08. 2010, 11.51
reaguj[3] oGQapLKcPjXvAXNCSS nGqkGMGkyiQQqbSjaB

<url>http://dennisssblegh.com|dennis</url>

hi great site

Středa 1. 02. 2012, 01.07
Přidej komentář!

  Gravatar povolen.



Kliknutím vložíš: Vloďż˝ smajla :-) Vloďż˝ smajla :-( Vloďż˝ smajla ;-) Vloďż˝ smajla :-D Vloďż˝ smajla 8-O Vloďż˝ smajla 8-) Vloďż˝ smajla :-? Vloďż˝ smajla :-x Vloďż˝ smajla :-P Vloďż˝ smajla :-|
Příspěvěk je formátován Texy! syntaxí. Není povoleno HTML, odkazy se převádějí automaticky. Pokud se komentář nezobrazí, neprošel bezpečnostní kontrolou a já jej musím schválit přes administraci. Nevkládej jej prosím znovu.
Jsem robot?

Stručně o mně

Autor
Ahoj, je mi 22 let, na netu vystupuji pod přezdívkou JAZBY, moje povolání je ... php programátor, zajímám se o počítače, baví mě tvorba stránek, bydlím v Praze a tady si krátím svůj dlouhý čas tím že si tady bloguji. Zajímá-li tě to, přeji příjemnou zábavu.

Nové komentáře

JjpZNaDBrCcnPdRvaa oGQapLKcPjXvAXNCSS milena
Online 1 člověk

Vydané články

PHP seriál
ALBION Group