Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 00:18:09 von Christoph Herrmann
Hi,
ich habe mich sehr mit PDO angefreundet, allerdings hätte ich gerne eine
Möglichkeit gefunden, eine Liste der Namen aller Tabellen zu bekommen?
Gibt es hier zufällig eine mir unbekannte Möglichkeit, die bei allen DB
Systemen (oder zumindest für die von PDO unterstützten) gleich ist oder
komme ich nicht drumrum für jeden DB Treiber von PDO eigene Methoden zu
bauen?
Bisher bekannt ist mir nur das Statement für MySQL ("SHOW TABLES"), aber
dies ist ja schon mal nicht portierbar.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 07:32:53 von mueller
Christoph Herrmann wrote:
> Hi,
>
> ich habe mich sehr mit PDO angefreundet, allerdings hätte ich gerne eine
> Möglichkeit gefunden, eine Liste der Namen aller Tabellen zu bekommen?
>
> Gibt es hier zufällig eine mir unbekannte Möglichkeit, die bei allen DB
> Systemen (oder zumindest für die von PDO unterstützten) gleich ist oder
> komme ich nicht drumrum für jeden DB Treiber von PDO eigene Methoden zu
> bauen?
>
> Bisher bekannt ist mir nur das Statement für MySQL ("SHOW TABLES"), aber
> dies ist ja schon mal nicht portierbar.
>
Information Schema, definiert in SQL92
Damit die allwissende Müllhalde beglücken und Dir wart geholfen ;)
HTH
Robert
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 08:52:41 von Christoph Herrmann
Robert Müller schrieb:
> Information Schema, definiert in SQL92
Damit nicht alle suchen müssen, die das brauchen :) das müsste es sein
was Robert gemeint hat:
select table_name from information_schema.tables where table_schema =
'datenbank'
Habe es bei MySQL versucht und es funktioniert ohne Probleme. Ich
vertraue einfach mal darauf, dass es bei anderen Datenbanken auch auf
diese Art funktioniert.
--
Mit freundlichen GrüÃen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 10:17:07 von Boris Stumm
Christoph Herrmann wrote:
> Robert Müller schrieb:
> select table_name from information_schema.tables where table_schema =
> 'datenbank'
(ok man könnte das jetzt Erbsenzählerei nennen, aber ich kann mirs
nicht verkneifen :-)
table_schema = 'schema', nicht 'datenbank'. Eine Datenbank kann mehrere
Schemas enthalten, zumindest ist das so bei allen DBVS, die ich kenne.
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 10:51:28 von Christoph Herrmann
Boris Stumm schrieb:
> (ok man könnte das jetzt Erbsenzählerei nennen, aber ich kann mirs
> nicht verkneifen :-)
>
> table_schema = 'schema', nicht 'datenbank'. Eine Datenbank kann mehrere
> Schemas enthalten, zumindest ist das so bei allen DBVS, die ich kenne.
ich konnte jetzt nur bei MySQL schauen, dort steht unter der Spalte
"table_schema" immer der Name der Datenbank. Eine andere Spalte extra
für die Datenbank geht nicht. Ich will ja nur die Tabellen einer
Datenbank haben (die aktuelle).
--
Mit freundlichen GrüÃen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 12:09:45 von meissnerj
Christoph Herrmann schrieb:
> Boris Stumm schrieb:
>> (ok man könnte das jetzt Erbsenzählerei nennen, aber ich kann mirs
>> nicht verkneifen :-)
>>
>> table_schema = 'schema', nicht 'datenbank'. Eine Datenbank kann mehrere
>> Schemas enthalten, zumindest ist das so bei allen DBVS, die ich kenne.
>
> ich konnte jetzt nur bei MySQL schauen, dort steht unter der Spalte
> "table_schema" immer der Name der Datenbank. Eine andere Spalte extra
> für die Datenbank geht nicht. Ich will ja nur die Tabellen einer
> Datenbank haben (die aktuelle).
>
In MySQL ist Datenbank und Schema auch das Gleiche. Du kannst bei MySQL
auch mit einer Datenbank verbunden sein, und auf eine andere per
Unterabfrage zugreifen. Bei Systemen die zwischen Schema und Datenbank
unterscheiden, geht das glaube ich nicht oder nicht zwingend, sondern
nur auf ein anderes Schema in der selben Datenbank.
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 12:29:46 von Christoph Herrmann
Jens MeiÃner schrieb:
> In MySQL ist Datenbank und Schema auch das Gleiche. Du kannst bei MySQL
> auch mit einer Datenbank verbunden sein, und auf eine andere per
> Unterabfrage zugreifen. Bei Systemen die zwischen Schema und Datenbank
> unterscheiden, geht das glaube ich nicht oder nicht zwingend, sondern
> nur auf ein anderes Schema in der selben Datenbank.
aber wie kann ich dann bei dem View sagen, dass ich die Tabellen der
einen Datenbank haben will, wenn ich nur das Schema angeben kann? Dies
wäre ja nur ein Nebeneffekt weils in MySQL das selbe ist. Oder die Views
sind bei anderen Datenbanken anders aufgebaut, wo wir dann wieder am
Anfang wären. ^^--
Mit freundlichen GrüÃen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 14:03:24 von Andreas Froede
Jens Meißner wrote:
> In MySQL ist Datenbank und Schema auch das Gleiche.
Vermutlich kennt MySQL kein Schema?
> Du kannst bei MySQL
> auch mit einer Datenbank verbunden sein, und auf eine andere per
> Unterabfrage zugreifen. Bei Systemen die zwischen Schema und Datenbank
> unterscheiden, geht das glaube ich nicht oder nicht zwingend, sondern
> nur auf ein anderes Schema in der selben Datenbank.
Hängt davon ab, ob cross-Database-Links im DBMS implementiert (und erlaubt)
sind oder nicht.
CIAO
andreas
--
.... oben geht es um den Thron - unten geht es um Deinen Hintern ...
[Keimzeit]
Klettern in Thüringen: http://www.climb.spider-net.de
Kletterhalle in Jena: http://www.wand.spider-net.de
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 14:05:21 von Andreas Froede
> aber wie kann ich dann bei dem View sagen, dass ich die Tabellen der
> einen Datenbank haben will, wenn ich nur das Schema angeben kann?
Üblich (cross-database-links vorausgesetzt) ist:
..
CIAO
andreas
--
.... oben geht es um den Thron - unten geht es um Deinen Hintern ...
[Keimzeit]
Klettern in Thüringen: http://www.climb.spider-net.de
Kletterhalle in Jena: http://www.wand.spider-net.de
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 14:32:57 von Christoph Herrmann
Andreas Froede schrieb:
>> aber wie kann ich dann bei dem View sagen, dass ich die Tabellen der
>> einen Datenbank haben will, wenn ich nur das Schema angeben kann?
>
> Üblich (cross-database-links vorausgesetzt) ist:
> ..
Funktioniert aber in dem Zusammenhang doch gar nicht. Das wäre ja dann:
select table_name from information_schema.tables where table_schema =
'.'
Aber schon bei MySQL steht in der Spalte nur der Datenbankname drin.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 15:48:50 von Andreas Froede
Christoph Herrmann wrote:
> Andreas Froede schrieb:
> >> aber wie kann ich dann bei dem View sagen, dass ich die Tabellen der
> >> einen Datenbank haben will, wenn ich nur das Schema angeben kann?
> >
> > Üblich (cross-database-links vorausgesetzt) ist:
> > ..
>
> Funktioniert aber in dem Zusammenhang doch gar nicht. Das wäre ja dann:
>
> select table_name from information_schema.tables where table_schema =
> '.'
Achso.
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'schema' and catalog_name = 'db'
CIAO
andreas
--
.... oben geht es um den Thron - unten geht es um Deinen Hintern ...
[Keimzeit]
Klettern in Thüringen: http://www.climb.spider-net.de
Kletterhalle in Jena: http://www.wand.spider-net.de
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 16:05:18 von Christoph Herrmann
Andreas Froede schrieb:
> Achso.
> SELECT table_name
> FROM information_schema.tables
> WHERE table_schema = 'schema' and catalog_name = 'db'
die Spalte "catalog_name" gibt es in MySQL nicht...
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Liste der Namen aller Tabellen einer Datenbank verschiedener Systeme
am 25.01.2008 19:47:58 von meissnerj
Christoph Herrmann schrieb:
> Andreas Froede schrieb:
>> Achso. SELECT table_name FROM information_schema.tables WHERE
>> table_schema = 'schema' and catalog_name = 'db'
>
> die Spalte "catalog_name" gibt es in MySQL nicht...
>
Wie bereits gesagt: In MySQL sind schema/catalog und database das
gleiche. MySQL bildet damit aber eine Ausname. Dann musst du
catalog_name bei mysql ebend weglassen. MySQL hält sich nun mal nicht an
alle Standards. Dafür ist es aber schnell und lässt sich relativ leicht
administrieren.
Re: Liste der Namen aller Tabellen einer Datenbank verschiedenerSysteme
am 25.01.2008 21:32:54 von Christoph Herrmann
Jens Meißner schrieb:
> Wie bereits gesagt: In MySQL sind schema/catalog und database das
> gleiche. MySQL bildet damit aber eine Ausname. Dann musst du
> catalog_name bei mysql ebend weglassen. MySQL hält sich nun mal nicht an
> alle Standards. Dafür ist es aber schnell und lässt sich relativ leicht
> administrieren.
Jep, ich mag und nutze selbst ja nur MySQL. Aber dass ein solcher
Standard nicht umgesetzt wird ist schlecht, dann muss ich meine
allgemeine PDO Schnittstelle wieder spezialisieren, dass solche Dinge
Treiberabhängig gemacht werden. Sehr ärgerlich...
Aber Danke für die Hilfe.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/