[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)