2016-04-05 5 views
1

Ich habe eine CSV-Datei, die Daten enthält, die ich in meiner Rails-App verwenden möchte. Zeilen wie folgt aussehen:CSV-Datei in Rails abrufen

#⇓⇓ ⇓⇓ ⇓⇓    ⇓⇓ ⇓⇓      ⇓⇓  
1ttAAAttAnaattFrench PolynesiattPFttAustralia and Oceaniatt-17.352606tt-145.509956 
2ttAAEttAnnabattAlgeriattDZttAfricatt36.822225tt7.809167 
3ttAAFttApalachicolattUnited StatesttUSttNorth Americatt29.7276066tt-85.0274416 

Gibt es ein Juwel oder Ruby-Bibliothek, die diese Art von csv holen kann? (Hinweis tt Trennung.)

+2

Überprüfen Sie auch SmarterCSV, die eine bessere CSV-Verarbeitung als Ruby CSV-Standardmodul hat. –

+1

@AnthonyE bei der Empfehlung eines Edelsteins/einer Bibliothek, fügen Sie bitte einen Link dazu: https://github.com/tilo/smarter_csv – mudasobwa

Antwort

4

Plain alt gut Ruby stdlib CSV wird tun. In options sollte man angeben:

CSV.foreach("path/to/file.csv", col_sep: "tt") do |row| 
    # use row here... 
end 

Eine weitere Option nur wäre, eine Datei Zeile für Zeile zu lesen und zu tun:

line.split(/tt/) #⇒ array 
+0

Hey, können Sie den Link zum smarter_csv Juwel in die Antwort hinzufügen und vielleicht ein wenig Info, wo es ist es das Beste, dies zu nennen, um Daten in der Datenbank zu speichern? – Kunok

+1

Ich werde keinen Link zu SmarterCSV hinzufügen, da es hier absolut irrelevant ist. Ich habe die Frage so beantwortet, wie sie gesagt wurde. Wenn Sie Zweifel haben, wie Sie die Daten in einer Datenbank speichern, stellen Sie eine andere Frage. Diese Seite hat ihre Regeln. – mudasobwa

+0

Ok ich entschuldige mich. Ich dachte, es wäre schön, all diese Sachen an einem Ort zu bündeln, damit die Leute Informationen über verschiedene Optionen und einige zusätzliche Informationen haben. Ich werde die Antwort annehmen, sobald das System mich verlässt. – Kunok

1

Check-out SmarterCSV - es schafft Rubin für jede CSV Zeile Hashes, und Sie können die Spalten umbenennen. Auf diese Weise können Sie den Hash direkt zum Erstellen oder Aktualisieren eines Rails-Modells verwenden. z.B .:

filename = 'yourfile' 
    options = { 
    :col_sep => 'tt', :chunk_size => 10, 
    :user_provided_headers => %w[attr1 attr2 attr3 attr4 attr5 attr6 attr7] # use the attribute names for your model 
    } 
    SmarterCSV.process(filename, options).each do |array| 
    array.each do |hash| 
     YourModel.update_attributes(hash) 
    end 
    end 

Bitte beachten Sie auch https://github.com/tilo/smarter_csv für alle verfügbaren Optionen.

Verwandte Themen