Import einer CSV-Datei

Fragen zur Rails zugrundeliegenden Programmiersprache Ruby

Import einer CSV-Datei

Beitragvon broschart am 29.11.2007, 23:58

Basierend auf dem Code des Artikels Textfile einlesen und in Datenbank importieren kann man nach leichter Abwandlung nun auch recht simpel CSV-Dateien importieren. Der Controller muss dazu wie folgt umgeschrieben werden:

Code: Alles auswählen
def csv_import
     
    n=0
    params[:csv][:import].read.each_line{|line|
        c=Address.new
        element=line.split(",")
        c.firma=element[0].to_s.chomp
        c.name=element[1].to_s.chomp
        c.strasse=element[2].to_s.chomp
        c.plz=element[3].to_s.chomp
        c.ort=element[4].to_s.chomp
        c.save
        n+=1
       }
     
     flash[:notice]="CSV-Import erfolgreich,  #{n} Datensätze wurden eingefügt!"
     redirect_to :action=>'list'
   end


Mit diesem Controller kann eine CSV-Datei mit den Spalten FIRMA|NAME|STRASSE|PLZ|ORT eingelesen und in gleichnamige Spalten der Tabelle Address geschrieben werden. Als Trennzeichen wird hier das Komma genutzt.
Benutzeravatar
broschart
Site Admin
 
Beiträge: 37
Registriert: 23.11.2007, 20:25

Re: Import einer CSV-Datei

Beitragvon megawatt am 28.12.2007, 13:22

Hallo,

kann man das evtl. auch nicht ein wenig einfacher lösen? Es wäre doch sehr elegant, wenn man die Zuweisung in einer Schleife durchführen könnten:

Also anstelle von
c.firma=element[0].to_s.chomp
c.name=element[1].to_s.chomp
c.strasse=element[2].to_s.chomp
c.plz=element[3].to_s.chomp
c.ort=element[4].to_s.chomp

sowas wie
Code: Alles auswählen
["firma","name","strasse","plz","ort"].each |cell| do
  c.cell=element[index].to_s.chomp
  index=index+1
end

Leider klappt das nicht so ganz, da "cell" ja ein Platzhalter für einen DB-Spaltennamen sein muss. In meinem Code wird allerdings "cell" als Spaltenname genutzt und nicht der Array-Inhalt.
Hat da vielleicht jemand ne Idee, wie man das lösen kann?
megawatt
 
Beiträge: 30
Registriert: 06.12.2007, 20:38


Zurück zu Ruby

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron