Ho un CSV da 300 mb con 3 milioni di righe di informazioni sulla città da Geonames.org. Sto cercando di convertire questo CSV in JSON per importarlo in MongoDB con mongoimport. La ragione per cui voglio JSON è che mi permette di specificare il campo "loc" come una matrice e non una stringa da usare con l'indice geospaziale. Il CSV è codificato in UTF-8.Converti CSV in JSON mongoimport-friendly usando Python
Un frammento del mio CSV si presenta così:
"geonameid","name","asciiname","alternatenames","loc","feature_class","feature_code","country_code","cc2","admin1_code","admin2_code","admin3_code","admin4_code"
3,"Zamīn Sūkhteh","Zamin Sukhteh","Zamin Sukhteh,Zamīn Sūkhteh","[48.91667,32.48333]","P","PPL","IR",,"15",,,
5,"Yekāhī","Yekahi","Yekahi,Yekāhī","[48.9,32.5]","P","PPL","IR",,"15",,,
7,"Tarvīḩ ‘Adāī","Tarvih `Adai","Tarvih `Adai,Tarvīḩ ‘Adāī","[48.2,32.1]","P","PPL","IR",,"15",,,
L'uscita JSON desiderato (tranne il set di caratteri) che funziona con mongoimport è qui sotto:
{"geonameid":3,"name":"Zamin Sukhteh","asciiname":"Zamin Sukhteh","alternatenames":"Zamin Sukhteh,Zamin Sukhteh","loc":[48.91667,32.48333] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
{"geonameid":5,"name":"Yekahi","asciiname":"Yekahi","alternatenames":"Yekahi,Yekahi","loc":[48.9,32.5] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
{"geonameid":7,"name":"Tarvi? ‘Adai","asciiname":"Tarvih `Adai","alternatenames":"Tarvih `Adai,Tarvi? ‘Adai","loc":[48.2,32.1] ,"feature_class":"P","feature_code":"PPL","country_code":"IR","cc2":null,"admin1_code":15,"admin2_code":null,"admin3_code":null,"admin4_code":null}
Ho provato tutti i CSV disponibile online -JSON convertitori e non funzionano a causa delle dimensioni del file. Il più vicino che ho ottenuto è stato con Mr Data Converter (quello nella foto sopra) che importerebbe in MongoDb dopo aver rimosso la parentesi iniziale e finale e le virgole tra i documenti. Sfortunatamente quello strumento non funziona con un file da 300 mb.
Il JSON precedente è impostato per essere codificato in UTF-8 ma ha ancora problemi di charset, molto probabilmente a causa di un errore di conversione?
Ho trascorso gli ultimi tre giorni imparando Python, provando a usare Python CSVKIT, provando tutti gli script CSV-JSON su StackOverflow, importando CSV in MongoDB e modificando la stringa "loc" su array (questo mantiene le virgolette purtroppo) e anche cercando di copiare e incollare manualmente 30.000 record alla volta. Un sacco di ingegneria inversa, prove ed errori e così via.
Qualcuno ha la minima idea di come ottenere il JSON sopra mantenendo la codifica corretta come nel CSV sopra? Sono completamente fermo.
possibili duplicati: formattazione http://stackoverflow.com/questions/1884395/csv-to-json-script – xiaoyi
La mia domanda è per quanto riguarda e non messaggi di errore. Non ricevo errori, ma nemmeno l'output desiderato. – Karl
Questa domanda non è un duplicato: ci sono sia problemi di codifica che requisiti di output speciali non presenti nell'altra domanda sopra citata. – Petri