본문 바로가기

문돌이 존버/DB 및 SQL 스터디

MongoDB에 csv import 하기 및 간단한 쿼리(query) 날리기

반응형

MongoDB에 csv 파일을 임포트하는 방법을 기록합니다. (해당 사이트를 참고했습니다.)

아래 명령어는 MongoDB에 접속한 후가 아닌 기본 shell에서 치는 것입니다.

mongoimport --port 27017 -u 'username' -p 'password' --authenticationDatabase 'dbname' --type csv -d <dbname> -c <collection name> --headerline --drop <filename>.csv
'' 표시는 붙여줘야 하는 부분이고 <> 표시는 아무것도 붙일 필요 없이 각자의 db명과 collection명을 쓰면 되겠습니다.
예를 들어, db 유저명을 mongomongo라고 정했다면 위에서 -u 'mongomongo' 라고 하면 됩니다.
반면, 데이터베이스명을 testdb, 컬렉션명을 testcollection이라 했다면 위에서 -d testdb -c testcollection 이라고 하면 됩니다.

위와 같이 입력했다면 아래처럼 임포트되는 과정을 볼 수 있을 것입니다.

이후 잘 적재된 것을 확인하려면 1) Robo T3와 같은 GUI를 이용해서 직접 확인할 수도 있고, 2) MongoDB에 접속해서 아래의 명령어로도 확인할 수 있습니다.

use <db name>;
db.<collection name>.find();
위와 동일하게 <> 표시는 아무것도 붙일 필요 없이 이름 자체를 쓰면 됩니다.

MongoDB의 장점이 document 형식으로 된 데이터를 자유롭게 검색할 수 있다고 들어 한 번 사용해봤습니다.

db.getCollection('collection name').find({"full_log":{$regex:"logstash"}}).count()
기본형식: db.getCollection('your collection name').find({"key값":"value값"})

value 값이 긴 문장이라면 특정 값을 "포함"한 데이터를 찾고 싶을 때가 있겠죠. 위에선 "logstash"라는 단어가 포함된 데이터 갯수를 구하는 것인데요. 정규식 regex를 활용하는 방식입니다.

$ regex: "word" -> word 가 포함된 데이터 찾기
$ regex: "word$" -> 끝 자리가 word인 데이터 찾기
$ regex: "^word" -> 첫 자리가 word인 데이터 찾기

더 많은 쿼리문을 살펴보시려면 MongoDB의 공식 사이트를 참고하시기 바랍니다.

728x90
반응형