Textfile einlesen und in Datenbank importieren

Fragen zur Rails zugrundeliegenden Programmiersprache Ruby

Textfile einlesen und in Datenbank importieren

Beitragvon broschart am 29.11.2007, 23:15

Für den Import einer .txt-Datei sind folgende Schritte notwendig:

Zunächst wird ein Auswahlformular für die View benötigt:
Code: Alles auswählen
<%= form_tag({:action => 'txt_import'}, :multipart => true) %>
<%= file_field("txt","import") %>
<%= submit_tag(".txt importieren") %>
<%= end_form_tag %>


Dieser Code rendert folgendes Formular:
Code: Alles auswählen
<form action="/controller/txt_import" enctype="multipart/form-data" method="post">
<input id="txt_import" name="txt[import]" size="30" type="file" />
<input name="commit" type="submit" value=".txt importieren" />
</form>


Die über dieses Formular gewählte Datei wird nach Absenden an den Controller /controller/txt_import geschickt (wobei controller natürlich mit dem gewünschten, eigenen Controllernamen ersetzt werden mus).

Dieser Contoller ist wie folgt aufgebaut:
Code: Alles auswählen
def txt_import
       
    anzahl=0
    params[:txt][:import].read.each_line{|line|
        c=Content.new
        c.text=line.chop
        c.save
        anzahl+=1
       }
     
     flash[:notice]=".txt-Import erfolgreich,  #{anzahl} Datens&auml;tze wurden eingefügt!"
     redirect_to :action=>'list'
end


Die Daten der Datei selbst stehen nach der Übertragung unter params[:text][:import].read bereit und können dann durch .each_line Zeile für Zeile durchgegangen werden. Dadurch wird jede Zeile der Textdatei in eine Datenzelle geschrieben.

In diesem Beispiel werden die Daten in der Tabelle Content in die Spalte text geschrieben und anschließend zur Action list gesprungen.
Benutzeravatar
broschart
Site Admin
 
Beiträge: 37
Registriert: 23.11.2007, 20:25

Zurück zu Ruby

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron