#!/usr/bin/perl

> use strict;
> use warnings;
>
> my %data = (
>
>  south => {
>  status => {
>   open => { count => 3 },
>   pws => { count => 3 },
>   wip => { count => 0 },
>   hold => { count => 1 },
>   're-open' => { count => 0 },
>   pwu => { count => 0 },
>   openesc => { count => 0 },
>  },
>  total_count => 7,
>  },
>
>  north => {
>  status => {
>   open => { count => 3 },
>   pws => { count => 0 },
>   wip => { count => 0 },
>   hold => { count => 7 },
>   're-open' => { count => 0 },
>   pwu => { count => 0 },
>   openesc => { count => 0 },
>  },
>  total_count => 10,
>  },
> );
>
> my @items = qw/ open pws wip hold re-open pwu openesc /;
>
> print join( "\t", "region", @items, "total_count" ), "\n";
>
> for my $region ( sort keys %data ) {
>  my $d = $data{ $region };
>  print join( "\t", $region,
>                    map( $d->{ status }{ $_ }{ count }, @items ),
>                    $d->{ total_count },
>        ), "\n";
> }
>
> __END__
>
>
> Output:
>
>
>
Hi Ruud,

I have a table in mysql database. I want to insert the values as row.

north  3    0   0   7    0       0   0       10
south  3    3   0   1    0       0   0       7

I want to insert the above (%data) hash values in mysql data base. For
example, the below code works for me. But I don't know how to make the
(%data) hash to (@dbdata) format.

@dbdata=(
["north" ,'3', '0' ,'0',  '7' ,'0' ,'0',' 0',' 10'],
["south", '3',' 3' ,'0' ,'1', '0',' 0' ,'0', '7' ],
)
my $connect = DBI->connect($dsn, $username, $password);
my $query = "INSERT INTO  by_region (region,open,pws,wip
,hold,reopen,pwu,openesc,total) VALUES (?,?,?,?,?,?,?,?,?)";

my $query_handle = $connect->prepare($query);
for my $datum (@dbdata)
{
        $query_handle->execute(@$datum);
}

How to make the above (%data) hash into below reference :

@dbdata=(
["north" ,'3', '0' ,'0',  '7' ,'0' ,'0',' 0',' 10'],
["south", '3',' 3' ,'0' ,'1', '0',' 0' ,'0', '7' ],
)

It will solve my problem. I hope this time I am clear.

Thanks & Rg
Mohan L

Reply via email to