HI,
i do these steps to import the eqsl-QSL-RX-Flag:
-download the inbox into adif file from eqsl
- run a perl-script to generate sql- insert statements
- start winsql and cut&paste the output of the perl-script (= sql code)
- run it
- commit changes
doing this on a backup of the swl-db of course.
what is needed:
- winsql
- odbc to ms access-db of swisslog
- perl
- script
- adif-file from eqsl.
input:
<CALL:6>DL9NDV<QSO_DATE:8
>19930907<TIME_ON:4>1500<BAND:2>2M<MODE:3>SSB<RST_SENT:2>59<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<APP_EQSL_AG:1>Y<GRIDSQUARE:6>JN59no<EOR>
out:
update LOGBOOK, BANDS, MODES
set
L_eQSL_RECEIVED=1,
L_eQSl_RECEIVED_date='23.12.2016'
where
l_call='DL9NDV'
and
L_eQSL_RECEIVED=0
and
l_modeid=modeid and mode='SSB'
and
l_bandid=bandid and BANDS.BAND like '2M'
and
L_DATE like '07.09.1993'
GO
have fun
Torsten
ps: arg... the forum does nto allow the perl script as an attachment... so it will come here:
Code:
#!/usr/bin/perl
#konvertiert das eqsl-export log zu einem sql satz, der per winsql in die swisslog-db importiert wird,
#um das eqsl-conf feld zu setzen
$IN="dg7ro-eqsls.adi";
$OUT=">imp2swiss.sql";
($_d,$_m,$_y)=(localtime)[3,4,5];
$DATE=sprintf("%02d.%02d.%d",$_d,$_m,$_y+1900);
#input
#<CALL:6>DL9NDV<QSO_DATE:8:D>19930907<TIME_ON:4>1500<BAND:2>2M<MODE:3>SSB<RST_SENT:2>59<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<APP_EQSL_AG:1>Y<GRIDSQUARE:6>JN59no<EOR>
#zeilenweise durch die datei:
open INPUTDAT, $IN or die $!;
open OUTPUTDAT, $OUT or die $!;
while ( $zeile=<INPUTDAT>)
{ chomp($zeile);
if ($zeile eq "") {next; }
$ECALL= $zeile =~ /<CALL:[0-9]+>([A-Z0-9]+)/;
if ($ECALL == 0) {next; }
$ECALL=$1;
$EDATE1= $zeile =~ /<QSO_DATE:8:D>([0-9]+)/; $EDATE1=$1;
$EBAND= $zeile =~ /<BAND:[0-9]+>([Mm0-9]+)/; $EBAND=$1;
$EMODE= $zeile =~ /<MODE:[0-9]+>([A-Za-z]+)/; $EMODE=$1;
$ETIME= $zeile =~ /<TIME_ON:4>([0-9]+)/; $ETIME=$1;
$EDATE1=~ /(.{4})(.{2})(.{2})/;
$EDATE=$3.".".$2.".".$1;
# $EDATE="24.10.2014"; $ECALL="DL9NDV"; $EBAND="20m"; $EMODE="SSB";
print "DEB-$DATE : C:$ECALL D:$EDATE B:$EBAND M:$EMODE T:$ETIME\n";
$sql="update LOGBOOK, BANDS, MODES
set
L_eQSL_RECEIVED=1,
L_eQSl_RECEIVED_date='".$DATE."'
where
l_call='".$ECALL."'
and
L_eQSL_RECEIVED=0
and
l_modeid=modeid and mode='".$EMODE."'
and
l_bandid=bandid and BANDS.BAND like '".$EBAND."'
and
L_DATE like '".$EDATE."'\nGO\n";
print OUTPUTDAT $sql."\n";
}
close (INPUTDAT);
close (OUTPUTDAT);