在Perl DBI中,我可以将列的ddl存储在变量中吗?我的目标是,使用列的定义在另一个数据库中创建临时表。
麦克
答案 0 :(得分:0)
大多数数据库都有关于表信息或元数据的表。看起来您正在使用DB2,因此这里有一个示例Description of columns in a DB2 table
您也可以将表的一部分复制到临时表中。
答案 1 :(得分:-1)
简单的方法是获取表的描述,然后解析它可能会产生所需列的ddl。
考虑到,表的描述存储在'table.txt'文件中,
$cat table.txt
Name Null? Type
-------------------------------------- -------- ----------------------------
COLUMN1 NOT NULL DATE
COLUMN2 NOT NULL VARCHAR2(31)
COLUMN3 NOT NULL VARCHAR2(1)
COLUMN4 NOT NULL NUMBER
#!/usr/bin/perl
open (FILE, 'table.txt');
while (my $line = <FILE>)
{
chomp($line);
$line =~ s/\s\s+/,/g;
$line =~ s/NULL /NULL,/gi;
my ($column,$null_field,$type) = split /,/, $line, 3;
print "$column $type $null_field,\n";
}
close (FILE);
P.S:'table.txt'的前两行需要被忽略,因为它们构成了标题信息。