MongoDB 데이터 CSV 파일로 저장하는 방법
- Database
- 2023. 7. 13.
csv 형태의 데이터는 여러 방면에서 유용하게 쓸 수 있습니다. 데이터 분석 도구에 넣고 돌리기도 적합하고, 데이터를 이관하거나 백업용으로 쓸 수도 있습니다. 몽고 DB의 컬렉션(collection)에 저장된 데이터도 csv 형태로 추출하여 활용이 가능합니다. mongoexport라는 명령어를 이용하면 됩니다.
몽고 DB 컬렉션 데이터 csv 저장 방법
1. 추출할 Collection 필드 확인
몽고 DB에 접속하는 부분부터 진행해 보겠습니다. 저는 testdb 데이터베이스에 있는 컬렉션을 추출할 예정입니다.
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
testdb 0.000GB
testdb로 전환합니다.
> use testdb
switched to db testdb
collection을 확인합니다. 제가 미리 testcollection라는 이름으로 샘플 컬렉션을 만들어 놨습니다. 이걸 csv로 저장할 겁니다.
> show collections
testcollection
이 컬렉션이 어떻게 생겼는지 봐야합니다. 그래야 csv로 저장했을 때 데이터를 구분하는 필드를 지정할 수 있습니다. 필드는 관계형 데이터베이스에서 컬럼 값을 말합니다.
> db.testcollection.find().pretty()
조회 결과를 보면 이 컬렉션은 필드로 id, name, age를 써야하는 것을 알 수 있습니다.
2. mongoexport로 csv 저장
2-1. 인스턴스 인증 없는 경우
기본적으로 몽고db는 인스턴스가 인증 없이 접근을 허용하도록 설정되어 있습니다. 이 경우 mongoexport 사용 시 사용자 계정을 입력할 필요가 없습니다.
mongoexport --host [호스트] --port [사용 포트] --db [DB명] --collection [콜렉션명] --type=csv --fields [필드1,필드2,필드3,...] --out [파일명을 포함한 저장 경로]
예시)
아래의 명령어는 로컬호스트에서 27017 포트로 리스닝하고 있는 몽고 db 서비스의 testdb 데이터베이스 내 testcollection을 csv 형태로 추출하여 저장하라는 의미입니다. 필드는 id,name,age로 지정했고 저장 파일의 full path는 /home/test/mongo_csv/test.csv입니다.
[root@localhost mongo_csv]# mongoexport --host localhost --port 27017 --db testdb --collection testcollection --type=csv --fields _id,name,age --out /home/test/mongo_csv/test.csv
2023-07-10T16:28:54.233+0900 connected to: mongodb://localhost:27017/
2023-07-10T16:28:54.407+0900 exported 4 records
test.csv 파일이 정상적으로 생성됐습니다.
엑셀로 파일을 열어보면 id, name, age 필드를 기준으로 정렬되어 있습니다.
2-2. 인스턴스 인증 있는 경우
사실 대부분의 상용 서비스는 보안을 위해 인증 설정을 두고 사용합니다. 인증은 mongodb.conf 파일에 security 부분이 authorization: enabled로 되어 있는 경우입니다.
이 경우엔 사용자 계정의 아이디와 비밀번호를 옵션에 추가해 줘야합니다.
mongoexport --username [계정명] --password [비밀번호] --authenticationDatabase admin --host localhost --port 27017 --db testdb --collection testcollection --type=csv --fields _id,name,age --out /home/fasoo/mongo_csv/test.csv
예시)
예를 들어, 사용자 계정은 testUser이고 비밀번호는 1111이라면 아래와 같이 명령합니다.
[root@localhost mongo_csv]# --username testUser --password 1111 --authenticationDatabase admin mongoexport --host localhost --port 27017 --db testdb --collection testcollection --type=csv --fields _id,name,age --out /home/test/mongo_csv/test.csv
2023-07-10T16:28:54.233+0900 connected to: mongodb://localhost:27017/
2023-07-10T16:28:54.407+0900 exported 4 records
'Database' 카테고리의 다른 글
MSSQL, SUBSTRING / CHARINDEX / LEN 으로 문자열 나누기 (0) | 2023.07.16 |
---|---|
PostgreSQL 실행 중인 쿼리 확인하기 (락 디버깅) (0) | 2023.07.14 |
데이터베이스 Table Lock이란? (0) | 2023.07.05 |
SQL JOIN 종류 제대로 이해하기 (Left, Right, Inner, Full) (0) | 2023.06.28 |
리눅스 PostgreSQL 윈도우에서 pgAdmin 연결 방법 (0) | 2023.06.28 |