[gnucash-de] CSV Import
Andreas Hölscher
gnucash at griemel.oche.de
Mit Sep 3 20:22:00 CDT 2003
Roetgen, Mi 03.09.03 19:09
Hi Christoph,
> kennt jemand eine Möglichkeit csv-Dateien (comma separated values) in
> gnucash zu importieren? Über mein Online-Banking Frontend kann ich
> meine Umsatzdaten leider nur in diesem Format exportieren.
Ich habe seit kurzem das selbe Problem. Da es wohl keine Import-
Möglichkeit für csv gibt, habe ich mir ein quick and dirty script zur
Umwandlung in qif geschrieben. Vielleicht hilft's ja. (Ich bin kein
Programmiere, deswegen nicht schimpfen, wenn's ab und zu mal etwas
gewöhnungsbedürftig geschrieben ist. Ich bin aber Tipps zur Verbesserung
gegenüber immer sehr aufgeschlossen).
Andreas
===============================================================
#!/bin/sh
basename=`basename $0`
if [ -z $1 ]; then
echo " converts csv-File to qif-File"
echo "Output: Giro-Konto.qif"
echo "Usage: $basename CSV-file"
exit 0
fi
file_csv="$1"
file_tmp="tmp.tmp"
file_qif="Giro-Konto.qif"
if [ ! -f $file_csv ]; then
echo "$file_csv could not be found"
exit 1
fi
f [ -e $file_qif ]; then
rm $file_qif
fi
# CR innerhalb eines Feldes entfernen
if [ -e $file_tmp ]; then
rm $file_tmp
fi
apl=""
while read line
do
if [ $apl ]; then
line="$oldline $line"
fi
laenge=${#line}
if [ "${line:$laenge-1:1}" != "\"" ]; then
oldline=$line
apl="x"
else
echo $line >> $file_tmp
apl=""
fi
done < $file_csv
# header schreiben
echo "!Type:Bank" >>$file_qif
# Datei file_tmp zeilenweise bearbeiten
n=0
while read line
do
# Feld-Trenner setzen
IFS=";"
# alle " entfernen
line="${line//\"/}"
# einzelne Felder von line auf die parameter $1 usw. zuweisen
set -- $line
Buchungstag=$1
Valutadatum=$2
Buchungstext=$3
Verwendungszweck=$4
BeguenstigterZahlungspflichtiger=$5
Kontonummer=$6
BLZ=$7
Betrag=$8
Waehrung=$9
Info=$10
if [ $n -gt 0 ]; then # 1. Zeile weglassen
echo "D$Valutadatum" >>$file_qif
echo "T$Betrag" >>$file_qif
echo "M$Verwendungszweck" >>$file_qif
echo "P$Verwendungszweck" >>$file_qif
echo "^" >>$file_qif
fi
n=$[$n+1]
done < $file_tmp
rm $file_tmp
echo "$n Datensätze in File $file_qif geschrieben"
echo
--
Andreas Hölscher, D-52159 Roetgen, Germany
http://www.andreas-hoelscher.de
(PGP ID: 1024/0x6AC897BB)