Schrift
[thread]3437[/thread]

Überprüfung ob table schon vorhanden?: Überprüfung ob table schon vorhanden?

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2004-04-10 23:52
#32005 #32005
Ich habe folgendes Problem:

Ich möchte eine automatisierte "table Erstellung" in perl schreiben und spreche die Datenbank mit "use DBI;"

Beispiel wie ich den table erstelle:

CREATE TABLE Mitarbeiter (
MNr INT NOT NULL AUTO_INCREMENT,
VNr INT,
AbtNr INT NOT NULL,
Name VARCHAR(30) NOT NULL,
GebDat DATE,
Telefon VARCHAR(30),
PRIMARY KEY(MNr),
FOREIGN KEY(VNr) REFERENCES Mitarbeiter(MNr),
FOREIGN KEY(AbtNr) REFERENCES Abteilung(AbtNr)
);



Da ich aber von vornherein nicht weiss, ob ein table bereits existiert, muss ich dies überprüfen

funktioniert das so wie beim Datei erstellen, dass zum Beispiel eine 0 ausgegeben wird wenn die Datei noch nicht vorhanden ist oder eine 1 wenn sie schon vorhanden ist?

Vielen Dank für die Hilfe

Lukas
esskar
 2004-04-11 00:05
#32006 #32006
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
probier mal

Code: (dl )
CREATE TABLE IF NOT EXISTS Mitarbeiter (...


bin aber nicht sicher, ob das richtig erkannt wird!
Lukas
 2004-04-11 01:33
#32007 #32007
User since
2004-04-11
6 Artikel
BenutzerIn
[default_avatar]
:D saugeil es funktioniert, aber wie könnte ich jetzt noch ne sub anhängen wo ich z.B. ne Fehlermeldung ausgebe, dass die Tabelle bereits existiert?

Hier noch für alle die dasselbe Problem wie ich hatten/haben der "test-area-code":
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl 

# Einbinden der Module
#use strict;
use CGI qw/:standard :html3/;
use CGI::Carp qw/fatalsToBrowser/;
use DBI;


my $http=new CGI;
print $http->header();
print $http->start_html(-title=>'test-area');


my $db=DBI->connect('dbi:mysql:dbxxxxxxxx;dbxxx.puretec.de','dboxxxxxxx','xxxxxxxx');

my $sql_create = qq/ CREATE TABLE IF NOT EXISTS test (
                      vortrag_id  INTEGER,
                      titel       VARCHAR(127),
                      sprecher_id INTEGER,
                      minuten     INTEGER ) /; # SQL zum erstellen einer Tabelle

my $resultcode_create = $db->do($sql_create) or warn $db->errstr;


$db->disconnect();


edit renee: [code]-Tags eingefügt...\n\n

<!--EDIT|renee|1081851723-->
ptk
 2004-04-13 13:48
#32008 #32008
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
DBI kennt die Methode "table_info", mit der man die existierenden Tabellen anzeigen lassen kann.
Lukas
 2004-05-20 01:44
#32009 #32009
User since
2004-04-11
6 Artikel
BenutzerIn
[default_avatar]
um das noch zu beenden:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl 

# Einbinden der Module
#use strict;
use CGI qw/:standard :html3/;
use CGI::Carp qw/fatalsToBrowser/;
use DBI;


my $db=DBI->connect('dbi:mysql:dbxxxxxxxx;dbxxx.puretec.de','dboxxxxxxxx','xxxxxxxx');


### Get a list of tables and views
my @tables = $db->tables();

my $http=new CGI;
print $http->header();

$i=0;

for (@tables) {
print <<End_Of_Step0;

$tables[$i]<br>



End_Of_Step0
$i++;
}


# Datenbank-Verbindung beenden
$db->disconnect();

# HTML-Dokument beenden
print $http->end_html();
Crian
 2004-06-02 19:36
#32010 #32010
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich habs so gemacht:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    my $sth = $dbh->prepare('DESC tabelle') or
                 die "Fehler bei der Vorbereitung:\n\t$DBI::errstr\n";
   
   if ($sth->execute()) {
       print "Zugriff auf tabelle ok, desc:\n";
       $sth->dump_results();
   }
   else {
       my $sql = 'CREATE TABLE tabelle (';
       for my $i (0..$#rows) {
           $sql .= $rows[$i] . ' ' . $types[$i];
           $sql .= ',' unless $i == $#rows;
       }
       $sql .= ')';
       print $sql, "\n";
       my $create = $dbh->prepare($sql) or
           die "Fehler beim prepare zum Anlegen der Tabelle tabelle:\n" .
               "\t$DBI::errstr\n";
       $create->execute() or
           die "Fehler bei der Ausfuehrung zum Anlegen der Tabelle tabelle:\n".
               "\t$DBI::errstr\n";
       print "Tabelle tabelle angelegt.\n";
       ...
   }
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 6 Einträge, 1 Seite



View all threads created 2004-04-10 23:52.