HI
If I use printf to round a numeric value before inserting into postgres
table it is altered to 1 rather than the value when it is put into a table
example
CREATE TABLE public.chksize
(
size numeric(10,2), #does not matter what field type
path1 character varying COLLATE pg_catalog."default"
)
this creates a value of 1 for every value
my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) ");
open my $list ,'chksizer.txt';
no strict 'refs';
my @list=(<$list>);
foreach my $k (@list){
chomp $k;
my ($size,$path)=split /,/,$k;
my $size1=printf('%.1f',$size/(1024*1024));
$ins->bind_param(1,$size1);
$ins->bind_param(2,$path);
$ins->execute;
}
without printf this inserts proper value
my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) ");
open my $list ,'chksizer.txt';
no strict 'refs';
my @list=(<$list>);
foreach my $k (@list){
chomp $k;
my ($size,$path)=split /,/,$k;
my $size1=$size/(1024*1024);
$ins->bind_param(1,$size1);
$ins->bind_param(2,$path);
$ins->execute;
}
Any ideas what is happening here?
thanks
Mike
If I use printf to round a numeric value before inserting into postgres
table it is altered to 1 rather than the value when it is put into a table
example
CREATE TABLE public.chksize
(
size numeric(10,2), #does not matter what field type
path1 character varying COLLATE pg_catalog."default"
)
this creates a value of 1 for every value
my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) ");
open my $list ,'chksizer.txt';
no strict 'refs';
my @list=(<$list>);
foreach my $k (@list){
chomp $k;
my ($size,$path)=split /,/,$k;
my $size1=printf('%.1f',$size/(1024*1024));
$ins->bind_param(1,$size1);
$ins->bind_param(2,$path);
$ins->execute;
}
without printf this inserts proper value
my $ins=$dbh->prepare("INSERT into chksize (size,path1) VALUES (?,?) ");
open my $list ,'chksizer.txt';
no strict 'refs';
my @list=(<$list>);
foreach my $k (@list){
chomp $k;
my ($size,$path)=split /,/,$k;
my $size1=$size/(1024*1024);
$ins->bind_param(1,$size1);
$ins->bind_param(2,$path);
$ins->execute;
}
Any ideas what is happening here?
thanks
Mike