2012-02-08 5 views
5

Ho riscontrato un problema con FasterCSV e il mio rake db: migrazione dei semi. Ottengo l'errore: "rake interrotta campi non quotati non consentono \ r \ n (linea 2)!" sui seguenti dati seeds.rb:Rails FasterCSV "i campi non quotati non consentono r o n"

require 'csv' 

directory = "db/init_data/" 

file_name = "gardenzing020812.csv" 
path_to_file = directory + file_name 
puts 'Loading Plant records' 
# Pre-load all Plant records 
n=0 
CSV.foreach(path_to_file) do |row| 
    Plant.create! :name => row[1], 
    :plant_type => row[3], 
    :group => row[2], 
    :image_path => row[45], 
    :height => row[5], 
    :sow_inside_outside => row[8] 
n=n+1 
end     

Ho cercato una soluzione a questo problema e ho scoperto che per un sacco di gente è un problema di codifica UTF-8. Ho provato a richiedere iconv e: encoding => 'u', ma che poi mi dà l'errore "sequenza di byte non valida in UTF-8".

Sono un novizio, e non riesco a capire se si tratta di un problema di codifica che ho bisogno di decifrare (che ho cercato di fare senza successo e in tal caso, potrei davvero usare qualche consiglio) o , più probabilmente mi sento, che ho fatto un semplice passo falso e ho fatto qualcosa di sbagliato nel modo in cui ho impostato seed.rb e possibilmente il mio file excel -> csv. Non ci sono dati cattivi o scomodi nel file csv. È semplice stringhe di una sola parola, testo e interi. Per favore aiuto!

+0

Puoi mostrarci quale parte del CSV sta causando problemi? –

+0

@muistooshort fammi sapere se hai bisogno di uno scatto più ingrandito. Questo è il file nella sua interezza. Ho troncato il mio file seeds.rb nel post, ma il mio codice effettivo analizza tutte le colonne in questo foglio. –

+0

Qualche possibilità di vedere il CSV non elaborato? –

risposta

5

Era semplice come cancellare tutta la formattazione in csv. Sembra che Excel abbia l'abitudine di conservare molta della formattazione dopo aver salvato in un file CSV, causando l'errore. Dopo aver copiato e incollato tutti i dati senza formattazione in un nuovo file csv, andava bene.

1

Non ho abbastanza reputazione per commentare, ma volevo dire che ho cercato questo errore attraverso il web giorno e notte per molto tempo e finalmente ho trovato la soluzione nei commenti, per mu is too short.

Ho finalmente funzionato quando ho inserito le virgolette su tutti i miei valori.

MODIFICA: Link to answer !!!Rails FasterCSV "unquoted fields do not allow \r or \n"

+0

Puoi almeno collegare il post in cui lo hai trovato, in modo che le persone non debbano scavare attraverso 5000 delle sue risposte? – Marv

+0

@Marv Sospetto che stiano parlando del mio "Faresti meglio a citare tutti i valori delle colonne solo per essere al sicuro." commentare questa domanda. E sono un po 'timido di 5000 risposte :) –

+0

@muistooshort Oh. Err, questo è accaduto mentre si passava attraverso la coda di revisione di First Answers. Pensavo avesse trovato la soluzione in una delle tue altre risposte. Colpa mia! – Marv

5

utilizzare invece gsub. Converte CRLF e CR in LF # Interrompe sempre le linee con \ n

+0

Questa è l'unica risposta che ha funzionato per me. Grazie –

Problemi correlati