mongoimport를 사용하여 CSV를 가져 오는 방법


190

연락처 정보가 포함 된 CSV를 가져 오려고합니다.

Name,Address,City,State,ZIP  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

이것을 실행하면 데이터베이스에 문서가 추가되지 않는 것 같습니다.

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

추적은 imported 1 objects이지만 Mongo 셸을 실행하고 실행 db.things.find()해도 새로운 문서가 표시되지 않습니다.

내가 무엇을 놓치고 있습니까?


1
use mydb전에 해봤 어 db.things.find()?
Kyle Wild

1
예-여전히 db.things에 있던 다른 문서를 보여줍니다
Joe

하위 문서 또는 배열이있는 중첩 문서 모음으로 CSV를 가져 오기 위해 AWK-joyofdata.de/blog/import-csv-into-mongodb-with-awk-json
Raffael

답변:


244

귀하의 예는 MongoDB 1.6.3 및 1.7.3에서 저에게 효과적이었습니다. 아래 예는 1.7.3입니다. 이전 버전의 MongoDB를 사용하고 있습니까?

$ cat > locations.csv
Name,Address,City,State,ZIP
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "ZIP" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "ZIP" : 10010 }

7
감사! 이것은 나를 위해 작동합니다. 나는 당신이했던 방식으로 CSV를 만드는 것을 제외하고는 이전과 똑같은 일을하고있었습니다. 그것을 시도하고 제대로 작동했습니다. MS Excel에서 원본 파일을 만들었으므로 각 줄 끝에 줄 바꿈에 문제가 있다고 생각합니다.
Joe

나도 일했다. OS X에서 끝나는 LF 줄을 사용하여 파일을 저장했으며 작동했습니다.
Khash

csv의 모든 레코드를 레코드 당 1 개의 개체 대신 1 개의 개체로 가져올 수 있습니까?
Aniket Kapse

예, CSV 작업을 수행 할 때는 Word를 멀리하십시오. 나는 같은 문제가 있었다. Word와 mongoimport의 버그도 있습니다 :(
Matt Fletcher

2
가져 오는 동안 인증을 mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
받으려면

29

mongoimport가 오류를주지 않았지만 0 레코드 가져 오기를보고하는 비슷한 문제로 어려움을 겪었습니다. "Windows Comma Separated (.csv)"형식을 구체적으로 지정하지 않고 기본 "Save as .." "xls as csv"를 사용하여 Mac 2011 용 OSX Excel 버전에서 작동하지 않는 파일을 저장했습니다. 이 사이트를 조사하고 ""Windows 쉼표로 구분 된 (.csv) "형식을 사용하여"다른 이름으로 저장 "을 시도한 후 mongoimport가 제대로 작동했습니다. mongoimport는 각 줄마다 줄 바꿈 문자가 필요하고 기본 Mac Excel 2011 csv 내보내기는이를 제공하지 않았다고 생각합니다 각 줄의 끝에 문자.


Excel은 실제로 CSV 파일을 처리 할 때 이상한 짐승입니다. 다른 데이터베이스에서 CSV를 가져 오는 것도 포함되며 몽고와 관련된 문제는 아닙니다. CSV를 가지고 놀 때 Google 스프레드 시트를 사용하는 것이 좋습니다. 온라인에서 무료이며 올바른 형식의 CSV 및 TSV도 가져 오거나 내보낼 수 있습니다
MacK

21

다음 명령을 실행해야합니다.

mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

-d는 데이터베이스 이름입니다

-c는 모음 이름입니다

--headerline --type csv 또는 --type tsv를 사용하는 경우 첫 번째 줄을 필드 이름으로 사용합니다. 그렇지 않으면 mongoimport는 첫 번째 행을 별도의 문서로 가져옵니다.

자세한 정보 : mongoimport


6

프로덕션 환경에서 작업하는 경우 인증이 필요할 것입니다. 이와 같은 것을 사용하여 적절한 자격 증명으로 올바른 데이터베이스에 대해 인증 할 수 있습니다.

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'

3

파일 끝에 빈 줄이 있는지 확인하십시오. 그렇지 않으면 일부 버전의 mongoimport에서 마지막 줄이 무시됩니다.


3

mongoimport 쉘에서 이것을 사용합니다.

mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline

유형은 csv / tsv / json을 선택할 수 있지만 csv / tsv 만 사용할 수 있습니다 --headerline

공식 문서 에 대한 자세한 내용을 읽을 수 있습니다 .


1

Robert Stewart는 이미 mongoimport로 가져 오는 방법에 대해 답변했습니다.

3T MongoChef Tool ( 3.2+ 버전)을 사용 하여 CSV를 우아하게 가져올 수있는 쉬운 방법을 제안 합니다. 나중에 누군가를 도울 수 있습니다.

  1. 당신은 단지 컬렉션을 선택해야합니다
  2. 가져올 파일을 선택하십시오
  3. 가져올 데이터를 선택 취소 할 수도 있습니다. 또한 많은 옵션이 있습니다.
  4. 가져온 컬렉션

비디오를 가져 오는 방법 보기


1

먼저 mongo쉘에서 나온 후 다음 mongoimport과 같이 명령 을 실행해야 합니다.

Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars 
--type csv 
--headerline
--file '/Users/Aditya/Downloads/mstf.csv'

2017-05-13T20:00:41.989+0800    connected to: localhost
2017-05-13T20:00:44.123+0800    imported 97609 documents
Manojs-MacBook-Air:bin Aditya$

$ mongoimport -d marketdata -c 미니 바 --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv'보장 된 결과 Manoj Barik이 경험 한 결과
user8006819

1

Robert Stewart의 답변은 훌륭합니다.

또한 --columHaveTypes 및 --fields를 사용하여 필드를 입력 할 수 있다고 덧붙이고 싶습니다.

mongoimport -d myDb -c myCollection --type csv --file myCsv.csv 
  --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()"

(필드 사이에 쉼표 뒤에 공백이 없어야합니다)

다른 유형은 다음 문서를 참조하십시오 : https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


1

3.4 버전의 경우 다음 구문을 사용하십시오.

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

3 일 후, 나는 마침내 스스로 만들었습니다. 나를 지원하는 모든 사용자에게 감사합니다.


오타가 있습니다 --headerline
Ankit Kumar

1

CSV 파일을 가져 오려고 할 때 오류가 발생했습니다. 내가 뭘 한거지. 먼저 대문자로 헤더 행의 열 이름을 변경하고 "-"를 제거하고 필요한 경우 "_"를 추가했습니다. 그런 다음 mongo로 CSV를 가져 오기 위해 아래 명령을 입력하십시오.

$ mongoimport --db=database_name --collection=collection_name --type=csv --file=file_name.csv --headerline  

여기에 이미지 설명을 입력하십시오


매력처럼 일했다! 위에서 언급 한 답변은 이전 MongoDB 버전에 대한 것입니다.
Raghav Sharma

0

C : \ wamp \ mongodb \ bin> mongoexport --db proj_mmm-컬렉션 오퍼링 --csv --fieldFile offerss_fields.txt --out offerss.csv


0

mongoimport를 실행 한 후에 이것을 사용하십시오.

가져온 개체 수를 반환합니다.

use db
db.collectionname.find().count()

객체 수를 반환합니다.


0

사용하다 :

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv

0

mongoimport -d 테스트 -c 테스트-유형 csv-파일 SampleCSVFile_119kb.csv-헤더 라인

수집 데이터 확인 :-

var collections = db.getCollectionNames();

for(var i = 0; i< collections.length; i++)
{    
   print('Collection: ' + collections[i]);
   // print the name of each collection
   
   db.getCollection(collections[i]).find().forEach(printjson);
   
   //and then print the json of each of its elements
}


0
1]We can save xsl as .csv file
2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin
3] Run below command
> mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline
4] Verify on Mongo side using below coomand.
>db.collectioname.find().pretty().limit(1)

0

이상하게도 언급 된 --uri깃발은 없습니다 :

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 

0

미래 독자를위한 공유 :

우리의 경우 host매개 변수를 추가하여 작동시켜야했습니다.

mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --host=127.0.0.1

0

내 요구 사항은 .csv (with no headline)원격 MongoDB인스턴스 로 가져 오는 것이 었습니다 . 대한 mongoimport v3.0.7명령은 나를 위해 일한 아래 :

mongoimport -h <host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

예를 들면 다음과 같습니다.

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

아래는 가져온 후의 모습에 대한 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

어디 nameemail에서 열 수 있습니다 .csv파일.


0

주어 .csv와 하나 개의 컬럼 만이 내가 가지고있는 파일 , 헤더를 명령은 나를 위해 일한 아래 :

mongoimport -h <mongodb-host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

여기서 field-name은.csv 파일 에서 열의 헤더 이름나타냅니다 .


0

.csv 파일을 / usr / local / bin 또는 mondodb가있는 폴더에 복사하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.