Thread DBI tabelle erstellen (8 answers)
Opened by slicer at 2011-06-30 21:48

topeg
 2011-06-30 22:52
#150059 #150059
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Also das funktioniert:
Code (perl): (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

use strict;
use warnings;
use DBI;

my $dbname='xxx';
my $user='anonymous';
my $pass='???';

my $dbh = DBI->connect("dbi:Pg:dbname=$dbname", $user, $pass, {RaiseError => 1, AutoCommit => 1}) or die $DBI::errstr;

my $cname='nur-ein-test';

# entwerten von doppelten Anführungszeichen durch verdoppeln,
# wenn sie im Spaltennamen vorkommen
$cname=~/"/""/gs;
# es kann aber dennoch sein, dass fremder Code eingeschleust wird.

$dbh->do(qq'CREATE TABLE test (
              "$cname" text,
              datum date,
              id int
            )');

$dbh->disconnect();


Wichtig ist hier, dass der Spaltenname in doppelten Anführungszeichen steht steht. Sei aber vorsichtig, von wo du den Spaltennamen übernimmst. Man kann einigen Unsinn anstellen, wenn ungeprüft in die DB geschrieben wird.

Ich halte es für eine Fehlplanung der DB, wenn automatisiert neue Tabellen anlegt werden, das lässt sich auch anders lösen.

View full thread DBI tabelle erstellen