Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2008 Teil von Juli

SELFHTML Forumsarchiv
ob table MYSQL Beispiel existiert

Informationsseite
  1. Seite (PERL) ob table MYSQL Beispiel existiert von Ina, 31. 07. 2008, 21:49
nach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Ina, 31. 07. 2008, 21:49

Hallo

Such vergebens nach dem Code.

if(-e Table_Beispiel){

print "Table Beispiel ist in MYSQL vorhanden";
}

Vielen Dank im Voraus


Ina

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 31. 07. 2008, 22:23

»» Such vergebens nach dem Code.
»»
»» if(-e Table_Beispiel){
»»
»» print "Table Beispiel ist in MYSQL vorhanden";
»» }

uh, so einfach ist das nicht. Du benötigst dazu das Modul DBI

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Ina, 31. 07. 2008, 22:29

Hallo Struppi,

In die Datenbank Tabellen anlegen und löschen mit CGI funktioniert ja schon.


MFG

Ina

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 31. 07. 2008, 22:58

»» In die Datenbank Tabellen anlegen und löschen mit CGI funktioniert ja schon.

Das ist schön. du suchst nach einem mySQL Befehl um abzufragen ob eine Tabelle existiert. Den gibt es nicht. Du kannst aber   SHOW TABLES dazu verwenden.

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Ina, 31. 07. 2008, 23:24

Hi Struppi,

Hab's geschafft !


 $tabsth2 = $dbh->table_info();
    while ($table = $tabsth2->fetchrow_arrayref) {
 $sth2 = $dbh->prepare("SELECT * FROM @$table[2]");
 $sth2->execute();
$tisch =@$table[2];

if($tisch eq 'Bespiel_Tabelle'){
push(@istda, "$tisch")
}else{push(@istda, "")}

}

print "<H3>@istda</H3>";


Vielen dank für Deine Hlfe


Ina

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 31. 07. 2008, 23:45

»» Hab's geschafft !

Ob das die beste Lösung ist, ist die Frage.

»» $tabsth2 = $dbh->table_info();

zitat:
»» This method can be expensive, and can return a large amount of data. (For example, small Oracle installation returns over 2000 rows.) So it's a good idea to use the filters to limit the data as much as possible.

»»     while ($table = $tabsth2->fetchrow_arrayref) {
»» $sth2 = $dbh->prepare("SELECT * FROM @$table[2]");
»» $sth2->execute();
»» $tisch =@$table[2];
»»
»» if($tisch eq 'Bespiel_Tabelle'){

Das verstehe ich nicht ganz. Sieht zumindest nicht logisch aus. Was soll das prepare und execute bewirken?

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Ina, 01. 08. 2008, 00:00

Hi Struppi,

 Hab's geschafft !


$sth2 = $dbh->prepare("SELECT * FROM @$table[2]"); #Zeigt alle Tables an
$sth2->execute(); #glaube ich soetwas wie exit;





MFG


Ina

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 08. 2008, 00:08

»» $sth2 = $dbh->prepare("SELECT * FROM @$table[2]"); #Zeigt alle Tables an

Keine Ahnung was in $tables[2] steht (das @ ist überflüssig), aber das bereitet die Abfrage für alle Datenzeilen der Tabelle vor.

»» $sth2->execute(); #glaube ich soetwas wie exit;

und das führt diese Abfrage aus. Nur verwirft dein Beispiel diese Abfrage. Insofern ist mir nicht klar was du damit anfängt. Mach eine Abfrage mit show tables, das dürfte das einfachste sein.

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 01. 08. 2008, 00:47

Hallo Struppi,

»» und das führt diese Abfrage aus. Nur verwirft dein Beispiel diese Abfrage. Insofern ist mir nicht klar was du damit anfängt. Mach eine Abfrage mit show tables, das dürfte das einfachste sein.

Nö. Viel einfacher ist - wie ich bereits vor zwei Tagen schrieb - eine Abfrage des INFORMATION_SCHEMA. Kein Grund, irgendeine herstellerspezifische Syntax zu lernen oder nachzuschlagen, statt dessen wohlbekannte SELECT-Syntax.

Freundliche Grüße

Vinzenz

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 08. 2008, 10:01

»» »» und das führt diese Abfrage aus. Nur verwirft dein Beispiel diese Abfrage. Insofern ist mir nicht klar was du damit anfängt. Mach eine Abfrage mit show tables, das dürfte das einfachste sein.
»»
»» Nö. Viel einfacher ist - wie ich bereits vor zwei Tagen schrieb - eine Abfrage des INFORMATION_SCHEMA. Kein Grund, irgendeine herstellerspezifische Syntax zu lernen oder nachzuschlagen, statt dessen wohlbekannte SELECT-Syntax.

(Vor zwei Tagen war ich nicht da)
Aber ehrlich gesagt verstehe ich das nicht. Was ist SCHEMA_NAME was ist INFORMATION_SCHEMA? Wie kann ich daraus eine Abfrage machen? Was gibt sie sie zurück?

Übrigens auch DBI->table_info baut wohl darauf auf, aber auch das verstehe ich nicht. Ich bekomme zwar Rückgabewerte, aber ich werd aus der Erläuterung nicht schlau, wie ich daraus die info für eine spezifische Tabelle ziehen kann.

my $sth = $DBH->table_info();
my $d = $sth->fetchall_arrayref();

Gibt mir eine lange Liste mit allen Tabellen und 5 Eigenschaften zurück. Dann ist es auf jeden Fall einfacher mit show tables, da kann ich auch noch mit LIKE filtern.

Die Frage war ja, wie kann man feststellen ob eine Tabelle existiert?

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 01. 08. 2008, 14:35

Hallo

»» »» Nö. Viel einfacher ist - wie ich bereits vor zwei Tagen schrieb - eine Abfrage des INFORMATION_SCHEMA. Kein Grund, irgendeine herstellerspezifische Syntax zu lernen oder nachzuschlagen, statt dessen wohlbekannte SELECT-Syntax.

»» Die Frage war ja, wie kann man feststellen ob eine Tabelle existiert?

mit folgendem fast intuitiven SQL-Statement,


USE INFORMATION_SCHEMA;   -- Verwende die Datenbank INFORMATION_SCHEMA
                          -- nutze ggf. entsprechende API-Funktionen

SELECT                    -- Gib mir
    TABLE_NAME            -- den Tabellennamen
FROM                      -- aus der Tabelle
    TABLES                -- TABLES
WHERE                     -- die sich in der
    TABLE_SCHEMA = '<datenbankname>'    -- bestimmten Datenbank befindet und
    TABLE_NAME = '<tabellenname>'       -- einen bestimmten Tabellennamen trägt.


Wenn das Ergebnis nicht leer ist, dann existiert die Tabelle in der angegebenen Datenbank.


Freundliche Grüße

Vinzenz

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 08. 2008, 16:40

»» »» Die Frage war ja, wie kann man feststellen ob eine Tabelle existiert?
»»
»» mit folgendem fast intuitiven SQL-Statement,

Ja schön und gut in der Konsole, aber wie ist dies in der Perl API integriert?
Wie kann ich da USE INFORMATION_SCHEMA einbauen?

»» SELECT                    -- Gib mir
»»     TABLE_NAME            -- den Tabellennamen
»» FROM                      -- aus der Tabelle
»»     TABLES                -- TABLES
»» WHERE                     -- die sich in der
»»     TABLE_SCHEMA = '<datenbankname>'    -- bestimmten Datenbank befindet und
»»     TABLE_NAME = '<tabellenname>'       -- einen bestimmten Tabellennamen trägt.

Dieses SQL statement ruft einen Syntaxfehler hervor. Wenn ich hier INFORMATION_SCHEMA qualifiziert angebe, kommt:
DBD::mysql::st execute failed: Table 'information_schema.tables' doesn't exist at ...\test_db.pl line 33.

Also für mich ist das leider alles andere als intuitiv.

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 08. 2008, 16:46

»» mit folgendem fast intuitiven SQL-Statement,

das ich jetzt mal in der mysql Konsole probiert habe, auch dort funktioniert es nicht.

»» USE INFORMATION_SCHEMA;   -- Verwende die Datenbank INFORMATION_SCHEMA
»»                           -- nutze ggf. entsprechende API-Funktionen

ERROR 1049 (42000): Unknown database 'information_schema'

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 01. 08. 2008, 17:12

Hallo Struppi,

»» »» USE INFORMATION_SCHEMA;   -- Verwende die Datenbank INFORMATION_SCHEMA
»» »»                           -- nutze ggf. entsprechende API-Funktionen
»»
»» ERROR 1049 (42000): Unknown database 'information_schema'

welche MySQL-Version? MySQL 5.0.x, d.h. eine Standard-Produktionsversion ist vorausgesetzt :-)


Freundliche Grüße

Vinzenz

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 08. 2008, 21:58

»» »» »» USE INFORMATION_SCHEMA;   -- Verwende die Datenbank INFORMATION_SCHEMA
»» »» »»                           -- nutze ggf. entsprechende API-Funktionen
»» »»
»» »» ERROR 1049 (42000): Unknown database 'information_schema'
»»
»» welche MySQL-Version? MySQL 5.0.x, d.h. eine Standard-Produktionsversion ist vorausgesetzt :-)

5.0.22

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 06. 08. 2008, 08:54

Hallo

»» »» »» »» USE INFORMATION_SCHEMA;   -- Verwende die Datenbank INFORMATION_SCHEMA
»» »» »» »»                           -- nutze ggf. entsprechende API-Funktionen
»» »» »»
»» »» »» ERROR 1049 (42000): Unknown database 'information_schema'
»» »»
»» »» welche MySQL-Version? MySQL 5.0.x, d.h. eine Standard-Produktionsversion ist vorausgesetzt :-)
»»
»» 5.0.22

dann machst Du definitiv etwas falsch. Auch in Version 5.0.22 ist das INFORMATION_SCHEMA vorhanden, der Zugriff ist - wie in der von mir verlinkten Doku - auf allen mir zugänglichen MySQL-Servern, auch meiner Testinstallation von 5.0.22 möglich.

Was sagt SELECT VERSION();


Freundliche Grüße

Vinzenz

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Struppi, 06. 08. 2008, 09:53

»» Was sagt SELECT VERSION();

alles klar, ich hab mich auf phpMyAdmin verlassen, das ist wohl ein Fehler.

+---------------+
| VERSION()     |
+---------------+
| 4.1.10-nt-log |
+---------------+

Struppi.

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 06. 08. 2008, 16:46

Hallo Struppi,

»» »» Was sagt SELECT VERSION();
»» alles klar, ich hab mich auf phpMyAdmin verlassen, das ist wohl ein Fehler.

die Ausgabe, die Du hier wiedergegeben hast, war in diesem Fall die Version der Client-Bibliotheken, die sind recht neu.

»» +---------------+
»» | VERSION()     |
»» +---------------+
»» | 4.1.10-nt-log |
»» +---------------+

Die Serverversion dagegen ist seeehr alt :-(


Freundliche Grüße

Vinzenz

nach obennach unten

ob table MYSQL Beispiel existiert

Die folgende Nachricht zum Thema stammt von: Ina, 31. 07. 2008, 23:59

Hi Struppi,

 Hab's geschafft !


$sth2 = $dbh->prepare("SELECT * FROM @$table[2]"); #Zeigt alle Tables an
$sth2->execute(); #glaube ich soetwas wie exit;





MFG


Ina

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2008 Teil von Juli

© 1998-2006 Seite Impressum, Software: Classic Forum