3
sub insert {
    my ($self) = @_;
    my $data = $self->{data};
    my $keys = join( ', ', keys $data);
    my $values = join( ', ', map qq('$_'),  values $data);
    my $sql = "INSERT INTO tbl ($keys) VALUES ($values);";
    my $sth = $self->{dbh}->prepare($sql);
    $sth->execute();
}

我有一种方法可以将哈希引用的内容插入到一个表 sqlite 数据库中。我想知道如果哈希键还不是列,是否有一种简单的方法可以将列添加到表中。显然,如果其中一个键不是列名,则插入将失败。我可以利用该失败,添加缺少的列,然后重做插入。还是每次要插入数据库时​​都必须根据所有键检查所有列?(所有键都有 TEXT 值)

4

1 回答 1

2

根据您使用的信息更改您的表格PRAGMA

my $inf_query = $db->prepare("PRAGMA table_info('tbl')");
$inf_query->execute();
my @inf = map { $_->[1] } @{$inf_query->fetchall_arrayref()};

@inf将是一个包含表中存在的列的数组,您可以使用该信息来构建您的ALTER查询。

编辑返回一个数组,您可以使用 grep ;)

于 2013-08-01T17:10:30.883 回答