Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykasowanie tabel.
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Blackhole
Cześć.
Jak można jedną komendą wykasować (DROPnąć biggrin.gif) wszystkie tabele jakiegoś użytkownika lub te, których SCHEMANAME ma określoną wartość :?:
SongoQ
  1. DROP TABLE schemat.tabela1, schemat.tabela2
Blackhole
Wiem, że tak można smile.gif
Ale chciałbym wiedzieć, czy można zrobić to jedną komendą, gdy nie wiem, ile jest tych tabel i jak się nazywają sadsmiley02.gif
Jabol
drop schema XXX;
create schema XXX;
Blackhole
Cytat(Jabol @ 2005-03-28 20:52:30)
drop schema XXX;
W moim przypadku trzeba by skasować schemat public. Czy nie spowoduje to utraty pewnych jego właściwości :?: Wydaje mi się to trochę ryzykowne.
Jabol
http://www.postgresql.org/docs/7.4/interac...s.html#AEN52276
spróbuj pobawić się plpgsql
w pseudokodzie będzie mnie więcej tak
Kod
for x::record in [selcet * from pg_tables where schemaname="XXX"]
  loop;
    execute "drop table"  || x.tablename::text;
  end;
Blackhole
blink.gif Wow. To chyba na razie przerasta moje umiejętności cool.gif
Jabol
to na pewno nie przerasta Twoich możliwości, zapoznaj się z tym i wszystko okaże się proste: http://www.postgresql.org/docs/7.4/interactive/plpgsql.html
a to możesz też zrobić w php:
  1. <?php
  2. $res=pg_query($conn, &#092;"SELECT tablename FROM pg_tables WHERE schemename = 'public';\");
  3. $num=pg_num_rows($res);
  4. for($x=0;x<$num;$x++)
  5. pg_query($conn, &#092;"DROP TABLE \".pg_fetch_result($res, $x, 0).\";\");
  6. //done
  7. ?>

To jest to samo tylko, że na piechotę i z wykorzystaniem zewnętrznego narzędzia
Blackhole
Dzięki winksmiley.jpg
To w php jest całkiem proste, a z plpgsql'em się napewno kiedyś zapoznam.
SongoQ
  1. SELECT tablename
  2. FROM pg_tables WHERE schemaname = 'public'


Zrobiles literowke w WHERE schemaname.

Zastanawiam sie czy jest mozliwosc zrobienia cos takiego i usunac tak jak autor tego posta chcial, np cos takiego

  1. DROP TABLE (SELECT tablename
  2. FROM pg_tables WHERE schemaname = 'public')


Ale takie cos jest nieprawidlowe skladniowo. Jakos w manualu do postgresa nie udalo mi sie odszukac, wydaje mi sie ze cos takiego powinno istniec.
Blackhole
Też próbowałem tego drugiego kodu, no ale nie działa. Trudno cool.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.