2017-02-10 4 views
0

i 2 haben CSV-Datei gespeichert werden (jede Datei 10gb)wie CSV zu lesen und die Daten in mongoDB awk

a.csv

23,88,564 
    21,56,461 

b.csv

23,88,1145 
    21,56,5763 

collection sollte wie sein

 { 
"_id" : ObjectId("589b264efbb76e87b3611f3d"), 
"longitude" : 23, 
"latitude" : 88, 
"band_4" : 564, 
"band_8" : 1145 
     } 
     { 
"_id" : ObjectId("589b264efbb76e87b3611f3d"), 
"longitude" : 21, 
"latitude" : 56, 
"band_4" : 461, 
"band_8" : 5763 
     } 

Daten sollten b e importierte Zeile für Zeile in mongoDB Sammlung ... kann mir jemand in diesem

helfen
+0

https://docs.mongodb.com/man Ual/Referenz/Programm/Mongoimport /? .. –

Antwort

0
$ awk ' 
NR==FNR { 
    a[$1 OFS $2]=$3; 
    next 
} 
(($1 OFS $2) in a) { 
    print "{";print "\"longitude\" : " $1; 
    print "\"latitude\" : " $2; 
    print "\"band_4\" : " $3; 
    print "\"band_8\" : " a[$1 OFS $2];print "}" 
}' a b 

Ausgänge:

{ 
"longitude" : 23 
"latitude" : 88 
"band_4" : 1145 
"band_8" : 564 
} 
{ 
"longitude" : 21 
"latitude" : 56 
"band_4" : 5763 
"band_8" : 461 
} 
+0

Wenn Sie nichts dagegen haben können Sie mir den Code m neu in awk –

+0

eigentlich ich möchte die Daten importieren nach dem Import der Mongo-Sammlung sollte so aussehen ... { " _id“: ObjectId ("589b264efbb76e87b3611f3d"), "Länge": 21, "Breite": 56, "band_4": 461, "band_8": 5763 } –

+0

@gauravsingh nur die zusätzlichen Informationen in der ersten hinzufügen Druck des letzten Blocks (statt nur "{" ') bleibt das Code-Konzept gleich – NeronLeVelu

0
awk 'BEGIN{ FPAT="(^[^,]*,[^,]*)|([^,]*$)"; split("longitude latitude band_4 band_8", N)} 

    FNR==NR{ F[$1]=$0; next} 

    ($1 in F) { 
     split(F[$1]","$2, D, /,/) 
     print "  {\n\"_id\" : ObjectId(\"589b264efbb76e87b3611f3d\")," 
     for (i=1; i<=4;i++) printf("\"%s\" : %d,\n", N[i], D[i]) 
     print "  }" 
     } 
    ' file1 file2 
  • awk benötigen 4 für FPAT (awk --version) Inhalt taht definieren von Feld an das Gegenteil von FS, die angeben, "was nicht im Feld ist"