Powershell로 MongoDB 데이터 CSV 형식 Export하기

­3zu·2023년 5월 17일
0

Mongo디비디비딥

목록 보기
4/4
post-thumbnail

CSV 파일 Export 하기

MongoDB의 데이터를 CSV 형식으로 export 해보자.

코드는 아래와 같다.

# DB 이름
$db = 'test'

# Collection 이름
$collection = 'test'

# 추출하고자 하는 필드 지정 (공백이 없어야 함)
$field = 'Id,Name,Email'

## 쿼리용 정보 입력

# 사용자 ID (이메일 주소)
$email = 'test@test.com'
# 검색 시작 날짜 (YYYY-MM-DD 형태, 해당 날짜 포함)
$startDay = '2023-01-02'
# 검색 끝 날짜 (YYYY-MM-DD 형태, 해당 날짜 포함)
$endDay = '2023-05-15'

# CSV 파일 경로
$path = "mongodb_$email.csv"

# 쿼리 (JSON 형태로 입력)
# double quote(") 앞에 '\' 안붙이면 에러남
$query = '{\"UserId\": \"' + $email + '\", \"CreationTime\": {\"$gte\": \"' + $startDay + '\", \"$lte\" : \"' + $endDay + '\"}}'

mongoexport --db $db --collection $collection --query $query --type csv --fields $field --out $path --port 27017

중요한 것은 CSV 파일로 export 하는 경우 field를 반드시 지정해주어야 한다는 것이다.
이 필드 지정을 통해 원하는 field만 선택적으로 추출할 수 있다.

그리고 쿼리를 쓸 때 "을 그냥 쓰면 안되고, 반드시 \" 형태를 사용해야 한다.
안그러면 에러남....

Embedded Document의 경우

간혹 Document를 CSV 로 export 하려고 하는데, Embedded document인 경우가 있다.
하지만 CSV는 중첩된 형식을 지원하지 않는다...

A라는 필드 안에 a, b, c라는 필드가 있다고 가정하자.

이 경우 a, b, c를 export하고 싶은 경우, field를 A.a, A.b, A.c로 지정한다.
몇 번 중첩되든 상관 없는 것 같다.

위의 코드의 경우로 생각해보면,

...
$field = 'A.a,A.b,A.c'
...

이렇게 사용하면 된다.

0개의 댓글