2017-02-10 26 views
0

У меня есть 2 CSV файл (10GB каждый файл)как читать CSV и хранить данные в MongoDB используя AWK

a.csv

23,88,564 
    21,56,461 

b.csv

23,88,1145 
    21,56,5763 

коллекция должно быть равным

 { 
"_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 
     } 

данные должны быть b е импортирован построчно в коллекции MongoDB ... может кто-нибудь помочь мне в этом

+0

https://docs.mongodb.com/man ual/reference/program/mongoimport /? .. –

ответ

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 

Выходы:

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

if u dont mind can u expln me код m new в awk –

+0

на самом деле я хочу импортировать данные после импорта коллекции mongo, должен выглядеть так ... { " _id»: ObjectId ("589b264efbb76e87b3611f3d"), "долгота": 21, "широта": 56, "band_4": 461, "band_8": 5763 } –

+0

@gauravsingh просто добавить дополнительную информацию в первой печать последнего блока (а не только '' {"'), концепция кода остается неизменной – 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 4 для FPAT (awk --version) TAHT определяют содержание поля, противоположного FS, который указывает «что нет в поле»

 Смежные вопросы

  • Нет связанных вопросов^_^