Perl DBI:将列的ddl存储在变量中

时间:2015-05-09 22:03:37

标签: perl db2 dbi

在Perl DBI中,我可以将列的ddl存储在变量中吗?我的目标是,使用列的定义在另一个数据库中创建临时表。

麦克

2 个答案:

答案 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'的前两行需要被忽略,因为它们构成了标题信息。