Mam 300 CSB CSV z informacją o wartości 3 milionów wierszy od Geonames.org. Próbuję przekonwertować ten plik CSV na JSON, aby zaimportować go do MongoDB za pomocą mongoimport. Powodem, dla którego chcę JSON jest to, że pozwala mi to określić pole "loc" jako tablicę, a nie ciąg do użycia z indeksem geoprzestrzennym. Plik CSV jest kodowany w UTF-8.Konwersja CSV do przyjaznego dla mongoimport JSON przy użyciu Pythona
fragment mojego CSV wygląda tak:
"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",,,
Pożądana wyjście JSON (z wyjątkiem zestawu znaków), który współpracuje z mongoimport jest poniżej:
{"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}
Próbowałem wszystkie dostępne CSV internetowego -JSON konwertery i nie działają ze względu na rozmiar pliku. Najbliżej znajdowałem się z Mr Data Converter (ten na zdjęciu powyżej), który został zaimportowany do MongoDb po usunięciu nawiasu początkowego i końcowego oraz przecinków między dokumentami. Niestety to narzędzie nie działa z plikiem 300 MB.
Powyższy JSON jest zakodowany w UTF-8, ale nadal ma problemy z zestawem znaków, najprawdopodobniej z powodu błędu konwersji?
Spędziłem ostatnie trzy dni nauki Pythona, starając się używać Pythona CSVKIT, próbując wszystkie skrypty CSV JSON na StackOverflow, importu CSV do MongoDB i zmiana „Loc” ciąg do tablicy (ten zachowuje cudzysłowy niestety) i nawet próbuje ręcznie skopiować i wkleić 30 000 rekordów jednocześnie. Wiele inżynierii wstecznej, prób i błędów i tak dalej.
Czy ktoś ma wskazówkę, jak osiągnąć powyższy JSON, zachowując kodowanie jak w powyższym CSV? Jestem całkowicie unieruchomiony.
możliwe duplikaty: http://stackoverflow.com/questions/1884395/csv-to-json-script – xiaoyi
Moje pytanie dotyczy formatowania i nie komunikaty o błędach. Nie otrzymuję żadnych błędów, ale nie otrzymuję pożądanych wyników. – Karl
To pytanie nie jest duplikatem: w drugim pytaniu, o którym mowa powyżej, nie ma problemów z kodowaniem ani specjalnych wymagań dotyczących formatu wyjściowego. – Petri