mongo 쿼리의 출력을 csv 파일로 리디렉션
Windows 7 의 MongoDB 2.2.2 의 32 월입니다..js 일일 js js js js js js js js js js js js js js js js js js js.셸에서 이 파일을 실행하고 출력을 CSV 파일로 전송해야 합니다.쿼리가 "플랫" json(네스트된 키 없음)을 반환하므로 본질적으로 깔끔한 csv로 변환할 수 있습니다.
에 대해서 알고 있습니다.load() ★★★★★★★★★★★★★★★★★」eval()eval()를 셸에 또, 「」만이 됩니다.printjson()csvcsv가 할 때 할 수 있습니다.두 방법: 두 번째 방법:load()형식으로 출력합니다...화면에 출력을 출력하고 다시 json 형식으로 출력합니다.
Mongo가 json에서 csv로 변환할 수 있는 방법이 있나요? (데이터 차트를 작성하려면 csv 파일이 필요합니다.)생각하고 있습니다.
중 수 .1 . mongo 명 、 mongo 1 、 mongo 1 、 mongo 1 、 mongo 1 、 mongo 1 、 mongo 1 、 mongo 1 。
수 .2 Mongo는 할 수 없습니다.json 출력을 파일로 보낼 수 있어야 합니다.그 후 직접 csv로 변환해야 합니다.
수 , 그 3. Mongo는 json 출력을 임시 컬렉션으로 보낼 수 있으며, 그 내용은 쉽게 알 수 있습니다.mongoexported formatcsv로 합니다.그러나 출력 컬렉션을 지원하는 것은 맵 축소 쿼리뿐이라고 생각합니다.집계를 위한 질의에 필요합니다.
협조해 주셔서 감사합니다:)
오래된 질문이지만 복잡한 쿼리를 csv로 내보내려고 1시간 정도 시간을 할애하여 생각을 공유하려고 합니다.처음에는 json에서 csv 변환기로의 변환기를 사용할 수 없었습니다(이것이 유망해 보였지만).결국 csv 파일을 mongo 스크립트로 수동으로 작성하게 되었습니다.
이것은 간단한 버전이지만, 기본적으로는 다음과 같이 했습니다.
print("name,id,email");
db.User.find().forEach(function(user){
print(user.name+","+user._id.valueOf()+","+user.email);
});
방금 stdout에 쿼리를 전송했습니다.
mongo test export.js > out.csv
서 ''는test이치노
포맷 날짜, 비밀 데이터 유형 등의 데이터 조작을 원하지 않는 한 Mongo의 임베디드 내보내기 기능은 정상적으로 작동합니다.
다음 명령은 매력으로 작용합니다.
mongoexport -h localhost -d databse -c collection --type=csv
--fields erpNum,orderId,time,status
-q '{"time":{"$gt":1438275600000}, "status":{"$ne" :"Cancelled"}}'
--out report.csv
기타 답변 확장:
나는 @GEverding의 대답이 가장 유연하다는 것을 알았다.또, 다음과 같은 어그리게이션에도 대응합니다.
test_db.deb.deb.deb.deb 명령어
print("name,email");
db.users.aggregate([
{ $match: {} }
]).forEach(function(user) {
print(user.name+","+user.email);
}
});
결과를 내보내려면 다음 명령을 수행합니다.
mongo test_db < ./test_db.js >> ./test_db.csv
유감스럽게도 CSV 파일에 텍스트가 추가되어 파일을 사용하려면 먼저 파일을 처리해야 합니다.
MongoDB shell version: 3.2.10
connecting to: test_db
하지만 우리는 mongo shell이 그런 코멘트를 뱉는 것을 멈추고 우리가 요청한 것을 전달해야만 출력할 수 있다.--quiet깃발
mongo --quiet test_db < ./test_db.js >> ./test_db.csv
시험할 수 있는 것은 다음과 같습니다.
print("id,name,startDate")
cursor = db.<collection_name>.find();
while (cursor.hasNext()) {
jsonObject = cursor.next();
print(jsonObject._id.valueOf() + "," + jsonObject.name + ",\"" + jsonObject.stateDate.toUTCString() +"\"")
}
파일에 저장합니다. 예를 들어 "export.js"라고 합니다.다음 명령을 실행합니다.
mongo <host>/<dbname> -u <username> -p <password> export.js > out.csv
이것 좀 봐
mongo 쉘에서 파일로 출력합니다.mongos 쉘로부터의 csv 출력은 지원되지 않습니다.javascript를 직접 작성하거나 여러 변환기 중 하나를 사용해야 합니다.예를 들어 Google은 "json을 csv로 변환"합니다.
내가 써온 좋은 해결책으로 여기 와서 저울질하고 있어.이는 집약을 지원하지만 필드 이름을 하드 코딩할 필요가 없다는 점에서 위의 Lucky Soni 솔루션과 유사합니다.
cursor = db.<collection_name>.<my_query_with_aggregation>;
headerPrinted = false;
while (cursor.hasNext()) {
item = cursor.next();
if (!headerPrinted) {
print(Object.keys(item).join(','));
headerPrinted = true;
}
line = Object
.keys(item)
.map(function(prop) {
return '"' + item[prop] + '"';
})
.join(',');
print(line);
}
이것을 로서 보존합니다..js파일, 이 경우에는 파일이라고 부릅니다.example.jsmongo 명령줄을 사용하여 다음과 같이 실행합니다.
mongo <database_name> example.js --quiet > example.csv
저는 다음 기술을 사용합니다.열 이름을 컨텐츠와 동기화된 상태로 쉽게 유지할 수 있습니다.
var cursor = db.getCollection('Employees.Details').find({})
var header = []
var rows = []
var firstRow = true
cursor.forEach((doc) =>
{
var cells = []
if (firstRow) header.push("employee_number")
cells.push(doc.EmpNum.valueOf())
if (firstRow) header.push("name")
cells.push(doc.FullName.valueOf())
if (firstRow) header.push("dob")
cells.push(doc.DateOfBirth.valueOf())
row = cells.join(',')
rows.push(row)
firstRow = false
})
print(header.join(','))
print(rows.join('\n'))
리모트 서버에서 스크립트를 실행하는 경우.Mongo가 자체 로그 출력을 추가할 예정인데, 이 출력은 파일에서 생략할 수 있습니다. --quiet옵션을 지정하면 연결 관련 로그만 비활성화됩니다.모든 몽고 로그는 아닙니다.이 경우 불필요한 행을 수동으로 필터링해야 할 수 있습니다.Windows 베이스의 예:
mongo dbname --username userName --password password --host replicaset/ip:port --quiet printDataToCsv.js | findstr /v "NETWORK" > data.csv
이렇게 하면 스크립트 출력이 파이프 처리되어findstrNETWORK 문자열이 있는 행을 필터링합니다.findstr에 대한 자세한 내용은http://https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/findstr 를 참조해 주세요.
Linux 버전에서는grep.
언급URL : https://stackoverflow.com/questions/14478304/redirect-output-of-mongo-query-to-a-csv-file
'programing' 카테고리의 다른 글
| PHP json_decode()는 유효한 것처럼 보이는 JSON을 사용하여 NULL을 반환합니까? (0) | 2023.03.19 |
|---|---|
| Peeee 모델에서 JSON으로 (0) | 2023.03.19 |
| Wordpress Fatal 오류:검출되지 않은 오류: /wp-includes/wp-db.php:1570의 정의되지 않은 함수 mysql_connect()를 호출합니다. (0) | 2023.03.19 |
| Spring Application.run 메인메서드 (0) | 2023.03.19 |
| Javascript를 사용하여 JSON 개체 업데이트 (0) | 2023.03.19 |