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值)
答案 0 :(得分: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的数组;)