MongoDB에서 컬렉션을 CSV로 내보내는 방법은 무엇입니까?
MongoDB 컬렉션의 모든 레코드를 .csv
파일로 내보내는 방법은 무엇입니까?
mongoexport --host localhost --db dbname --collection name --type=csv > test.csv
내 보내야하는 필드의 이름을 지정하라는 메시지가 표시됩니다. 필드 이름을 지정하지 않고 모든 필드를 내보낼 수 있습니까?
@ karoly-horvath가 맞습니다. CSV에는 입력란이 필요합니다.
MongoDB 문제 추적기 https://jira.mongodb.org/browse/SERVER-4224 의이 버그에 따르면 csv로 내보낼 때 필드를 제공해야합니다 . 문서가 명확하지 않습니다. 그것이 오류의 이유입니다.
이 시도:
mongoexport --host localhost --db dbname --collection name --csv --out text.csv --fields firstName,middleName,lastName
최신 정보:
이 커밋 : https://github.com/mongodb/mongo-tools/commit/586c00ef09c32c77907bd20d722049ed23065398 은 3.0.0-rc10 이상의 문서를 수정합니다. 바뀐다
Fields string `long:"fields" short:"f" description:"comma separated list of field names, e.g. -f name,age"`
에
Fields string `long:"fields" short:"f" description:"comma separated list of field names (required for exporting CSV) e.g. -f \"name,age\" "`
버전 3.0 이상 :
더 이상 사용되지 않으므로 대신를 사용해야 ---type=csv
합니다 --csv
.
자세한 내용 : https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
전체 명령 :
mongoexport --host localhost --db dbname --collection name --type=csv --out text.csv --fields firstName,middleName,lastName
또한 쉼표로 구분 된 필드 이름 사이에 공백이 허용되지 않습니다.
나쁜: -f firstname, lastname
좋은: -f firstname,lastname
mongoexport --help
....
-f [ --fields ] arg comma separated list of field names e.g. -f name,age
--fieldFile arg file with fields names - 1 per line
수동으로 지정해야하며 생각해 보면 완벽합니다. MongoDB는 스키마가 없습니다. 반면 CSV는 열 레이아웃이 고정되어 있습니다. 다른 문서에서 사용되는 필드를 알지 못하면 CSV 덤프를 출력 할 수 없습니다.
고정 된 스키마가있는 경우 하나의 문서를 검색하고 스크립트로 필드 이름을 수집하여 mongoexport에 전달할 수 있습니다.
원하는 경우 지정하지 않고 모든 컬렉션을 csv로 내보낼 수 있습니다 --fields
(모든 필드를 내보냄).
에서 http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/은 이 bash는 스크립트를 실행
OIFS=$IFS;
IFS=",";
# fill in your details here
dbname=DBNAME
user=USERNAME
pass=PASSWORD
host=HOSTNAME:PORT
# first get all collections in the database
collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
collectionArray=($collections);
# for each collection
for ((i=0; i<${#collectionArray[@]}; ++i));
do
echo 'exporting collection' ${collectionArray[$i]}
# get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
# now use mongoexport with the set of keys to export the collection to csv
mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
done
IFS=$OIFS;
mongoexport가 나를 위해 이것을 할 수 없었습니다. 모든 필드의 전체 목록을 얻으려면 전체 컬렉션을 한 번 반복해야합니다. 이것을 사용하여 헤더를 생성하십시오. 그런 다음 컬렉션을 다시 반복하여 각 문서에 대해 이러한 헤더를 채 웁니다.
이 작업을 수행하는 스크립트를 작성했습니다. 개별 문서 간의 스키마 차이에 관계없이 MongoDB 문서를 csv로 변환합니다.
https://github.com/surya-shodan/mongoexportcsv
또한 내부 json 필드를 내보내려면 점 (. 연산자)을 사용하십시오.
JSON 레코드 :
{
"_id" : "00118685076F2C77",
"value" : {
"userIds" : [
"u1"
],
"deviceId" : "dev"
}
도트 연산자가있는 mongoexport 명령 (mongo 버전 3.4.7 사용) :
./mongoexport --host localhost --db myDB --collection myColl --type=csv --out out.csv --fields value.deviceId,value.userIds
Output csv:
value.deviceId,value.userIds
d1,"[""u1""]"
d2,"[""u2""]"
Note: Make sure you do not export an array. It would corrupt the CSV format like field userIds shown above
Below command used to export collection to CSV format.
Note: naag
is database, employee1_json
is a collection.
mongoexport --db naag--collection employee1_json --type csv --out /home/orienit/work/mongodb/employee1_csv_op1
참고URL : https://stackoverflow.com/questions/6814151/how-to-export-collection-to-csv-in-mongodb
'IT story' 카테고리의 다른 글
네이티브 DLL 내보내기 기능 뷰어가 있습니까? (0) | 2020.09.13 |
---|---|
Ruby / Rails의 "Ago"날짜 / 시간 함수 (0) | 2020.09.13 |
필요하지 않을 때 세로 스크롤 막대를 숨기는 방법 (0) | 2020.09.13 |
열거 형을 목록으로 변환 (0) | 2020.09.13 |
DOS 명령 줄에서 Git Bash를 시작하는 방법은 무엇입니까? (0) | 2020.09.13 |