2017-10-06 2 views
0

Verzeih mir, wenn das eine grundlegende Frage ist, bin ich relativ neu zu Groovy und habe umfangreiches Material gelesen sowie versucht, die relevanten Sachen zu verstehen.groovy csv access

Frage: -So will ich ist zu Suche Daten durch einen beliebigen Feldwert - z. B .: Suche nach Produktname für ex: Apfel, sollte es Ausgabe wie alle Zeile zeigen, die Apple haben.

CSV-Datei Beispiel: -

product_name, shipdate , arrivedate, prize 
    apple, 10/09/2017, 11/09/2017, 100 
    mango, 10/26/2017 ,11/09/2017, 200 
    pineapple, 12/10/2017, 12/20/2017, 200 

Weitere Klärung der Frage: - so nur zum Beispiel, wenn Preis von 200 Benutzer suchen sollte 2. und 3. Reihe zeigen.

import java.io.File 
 
class Example { 
 
    static void main(String[] args) { 
 
     new File("Example.csv").eachLine { 
 
     line -> println "$line"; 
 
     } 
 
    } 
 
}

von meiner Seite, ich bin der Lage, alle CSV-Datei zu lesen, aber nicht wissen, wie Daten durch Feld .Any Hilfe geschätzt werden suchen.

+0

bearbeiten Bitte geben Sie die Frage an einem bestimmten zu begrenzen Problem mit genügend Details, um eine angemessene Antwort zu identifizieren. Vermeiden Sie es, mehrere verschiedene Fragen gleichzeitig zu stellen. Informationen zur Klärung dieser Frage finden Sie auf der Seite [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask). – Vampire

+0

@Vampire: - Meine Frage ist, wie ich jedes Feld für ex suchen werde: - Preis 200, so kann ich die ganze Reihe, die 200 price.output haben, drucken 2. und 3. Reihe. –

+0

@priyavenkat, '1)' bitte geben Sie den Code an, wie Sie die CSV-Daten laden und parsen. BTW ist es Datei oder was? '2)' liefern die Daten (Datei) Probe - ich meine in CSV sollte ein Trennzeichen (Koma oder andere) sein. – daggett

Antwort

0

wenn Ihre CSV-Datei nicht komplex csv Daten enthält (mit neuer Linie oder Koma in Werten)

dann Code wie folgt sein könnte:

//the reader could be created from file: file.newReader() 
def reader = new StringReader('''product_name,shipdate,arrivedate,prize 
apple,10/09/2017,11/09/2017,100 
mango,10/26/2017,11/09/2017,200 
pineapple,12/10/2017,12/20/2017,200 
''') 

def headers=null 
reader.splitEachLine(','){line-> 
    //remove spaces 
    line=line.collect{it.trim()} 
    if(headers==null){ 
     //convert headers array to [name:index] map 
     headers = line.withIndex().collectEntries() 
    }else{ 
     //print line only when you have a valid value in line 
     if(line[ headers['prize'] ]=='200'){ 
      println line 
     } 
    } 
} 
+0

Dank @daggett: - Aber wenn User sucht alle Bestellungen mit shipDate im Oktober. Es sollte die 1. und 2. Reihe zeigen. wie das hier funktionieren wird. –

+0

Verwenden Sie [Datum.parse ("MM/TT/JJJJ", Wert)] (http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/Date.html#parse (Java .lang.String,% 20java.lang.String)) Funktion zum Konvertieren von String-Werten nach Datum. Siehe auch die Methoden der Klasse [java Date] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html), um auf Datumsfelder zuzugreifen – daggett