본문으로 바로가기

몽고 덤프를 뜨는 방법은 여럿이 있다.

json, csv, dump 방식도 있다.

앞의 두가지 방식은 용량 제한 및 추가적으로 임포트 시킬때 문제가 있는 것 같다.

(제가 실행한 버전은 2.x 버전이였습니다. 이후로는 개선된 여지가 있는지 잘 모르겠네요.)

 

1. json 형식

json 으로 받을떄는 가장 간편하긴 하지만....

또한 대용량일시 내려 받을시 jsonArray 형식으로 되어있어야지 들어간다.

대용량이라도 16kb 이상은 초과되지 않는 것 같다.

 

#export시 find시

 db.getCollection('컬렉션').find({}).toArray()

 

위와 같은 형식으로 내려 받아야 한다.

위와 같이 내려받으면 안의 데이터를 확인하면 

document가 [] 안에 담겨서 배열형태로 데이터를 만든 후

 

import 시

mongoimport -d db명 -c 컬렉션명  --type json --file 파일명.json --jsonArray

와 같은 방식으로 처리해야한다.

 

2. 두번째 방법으로는 csv 방식이 있다.

 

csv export 방식은 간편하다

mongoexport --db db명 --collection 컬렉션명 --type csv --out 파일명.csv

 

csv 방식은 따로 용량적인 문제는 없다. 가장 간편하고 데이터 빼기도 넣기도 쉽다.

하지만... 가장 치명적인 단점이 있는데... document 내의 필드가 objectid라면 String으로 출력된다.

 

이를 다시 import 하면 objectid 형식으로 들어가야되는데 원하는 방식과는 다르게 string 형식으로 데이터가 들어가게 된다.

document의 _id값을 새로 지정해도 되거나 objectid필드가 필요없다면 csv파일 형식으로 export/import하는게 간편할 것 같다.

 

3. 마지막 세번째 방법으로는 dump 방식이 있다.

 

위의 2가지 방식의 한계점을 잘 보완하는것 같다. 형식은

 

#export시

mongodump --db db명 --collection 컬렉션명

와 같이 입력시 작업하고 있는 현재 디렉토리로 dump/db명/db명.컬렉션명.bson 의 형태로 덤프파일이 만들어진다.

 

import시

mongorestore --db db명 --collection 컬렉션명 파일경로/파일명.bson

위와 같은 형식으로 명령시

데이터가 원하는 디비 및 컬렉션으로 import되는 것을 확인 할 수 있다.

추가적으로 데이터가 이미 들어가 있어도 mongorestore을 통해 데이터를 더 import 할 수 있다.

(물론 동일한 _id가 존재하면 안된다.)

 

몽고 덤프 import/export 정리.