Chas Owens wrote:
> On 4/10/07, Stanislav Nedelchev <[EMAIL PROTECTED]> wrote:
>> Hi to all
>> Here is my problem . I'm trying to export this data to SQL database .
>> Here is example data.Don't pay attention on encoding. Every new record
>> is starting --=NewRecord=--
>> delimiter between fields and data is = .
>> Contact=АГППМП-СЪНИМЕД-ООД
>> Manager=
>> Region=РЗОК Бургас
>> Municipality= НЕСЕБЪР
>> Settlement=ГР.НЕСЕБЪР
>> Address=ул.Рибарска 11 каб.1-2
>> Phone=43058
>> Name=Людмил Николов Стаменов - Общопрактикуващ лекар
>> --=NewRecord=--
>> Contact=АИППМП д-р Р.ДимитровЕООД
>> Manager=
>> Region=РЗОК Бургас
>> Municipality= БУРГАС
>> Settlement=ГР.БУРГАС
>> Address=ул.Хан Крум №28 ет.2 ст.209
>> Phone=
>> Name=Румен Николаев Димитров - Общопрактикуващ лекар
>>
>>
>>
>> I was try to adapt some code that i see here and some people are helped
>> me with other things.
>>
>> Here is my code . It's seems that %hashrecord is not after firs asaing
>> to array is not changing anymore .
>> If i try to iniatilze the hash it's seem that i initialize the reference
>> and everything becomes empty.
>> Can anybody give advice how to fill this array of hashes and generate
>> SQL.
>>
>> use strict;
>> use warnings;
>> open FILE,"<TOTAL.txt" or die $!;
>> open OUT,">insert.sql" or die $!;
>> my @data;
>> my $sql;
>> my %hashrecord;
>> my %columns;
>> while(<FILE>){
>>
>> if(! /--=NewRecord=--/){
>> my ($fname,$fvalue) = split/=/;
>> $hashrecord{$fname} = $fvalue;
>>
>> }
>> if (/--=NewRecord=--/){push @data, \%hashrecord};
>> }
>>
>> foreach my $rec (@data) {
>> $columns{$_}++ foreach keys %$rec;
>> }
>> foreach my $rec (@data) {
>> $sql = sprintf "insert into doctors (%s)\nvalues(%s)",
>> join(",", map qq( $_), keys %$rec),
>> join(",", map qq( '$_'), values %$rec);
>> print OUT $sql, "\n";
>> }
>>
>
> I certainly hope your code has indentation and that it was lost in the
> copy&paste into the email. The short answer is you can't reuse
> %hashrecord; you need a new one each time. To do this you will either
> need to restructure your code heavily or make this less than optimal
> change:
>
> if (/--=NewRecord=--/) {
> push @data, { %hashrecord }; #push a copy of %hashrecord onto the array
> %hashrecord = (); #clear %hashrecord for the next record
> }
>
Thanks a lot.
I'm not a programmer and I just want to help to one friend to save him a
lot of manual work .
But in any case i will sit down and learn how to make some simple things
by myself not asking for everything
in mail list.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to