gpt4 book ai didi

Perl DBI 插入和选择

转载 作者:行者123 更新时间:2023-12-04 05:54:58 27 4
gpt4 key购买 nike

我想从表中复制一条记录,修改记录中的一些字段并插入到同一个表中。该表有 90 列。

考虑在一个语句中使用 insert..select 但有 90 列,我需要在选择查询中告诉列名。我怎样才能在 perldbi 中以更好的方式做到这一点。请给我一个例子。

最佳答案

使用 NAME statement attribute 获取并缓存表的列名

my $sth = $dbh->prepare('SELECT * FROM my_table where 1=0');
$sth->execute;
my $cols = $sth->{NAME};

然后使用 $cols 构造您的 insert...select 使用一些替换函数将您的修改注入(inject)到选择中。
my %mods_for_column = ( 'foo' => 'foo+10', 'bar' => 'trim(bar)' );
my $inscols = join(',', @$cols);
my $selcols = join(',',
map { exists($mods_for_column($_)) ? $mods_for_column($_) : $_ } @$cols
);
my $sql = "insert into my_table ($inscols) select $selcols from my_table where mumble...";

关于Perl DBI 插入和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611543/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com