MongoDB 에 데이터를 넣기 위해서는 데이터가 json, csv, tsv 형식이어야 한다.
*csv는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일
반면 tsv는 tap 으로 구분.
아래와 같은 데이터가 있다고 하자.
<test.txt>
aaaaa bbbbb cccccc ddddddd eeee fffff 111111 gggggg rrrrrrr oooooo ppppppp llllll 2 22233344 5556677 8899 |
나는 위의 데이터를 MongoDB 에 넣기 위해 아래와 같은 csv 파일로 만들고 싶다.
_id, data 1, aaaaa bbbbb cccccc ddddddd 2, eeee fffff 111111 gggggg rrrrrrr oooooo ppppppp 3, llllll 2 22233344 5556677 8899 |
아래 절차를 따라해보자.
cd //test.txt를 만든다. 내용은 맨 위에 내용과 같다. vi test.txt <test.txt>
//txt 파일을 csv 파일로 만드는 스크립트 파일을 만든다. vi txt_2_csv.sh <txt_2_csv.sh>
sudo chmod 744 txt_2_csv.sh //txt_2_csv 를 실행하는데, 첫번째 인자로 읽을 파일 이름을 지정하고, 두번째 인자로 저장할 파일 이름을 지정한다. ./txt_2_csv.sh test.txt test.csv //test.csv 를 확인한다. vi test.csv |
아래는 결과.
<test.txt>
<test.csv>
이런 방식으로 txt 파일을 한 줄씩 읽어서 csv 로 만들 수 있다.
위에 스크립트 내용을 기반으로
csv 파일의 필드를 더 늘린다거나, 이름을 바꾸는 등의 커스터마이징 할 수 있겠다.
csv 가 아니라 tsv 로 바꾸는 스크립트는 아래와 같다.
#!/bin/bash READ=$1 SAVE=$2 echo "_id data" > $SAVE COUNTER=1 while read LINE; do echo "$COUNTER $LINE" >> $SAVE COUNTER=$(($COUNTER+1)) done < $1 |
_id 와 data 사이
$COUNTER 와 $LINE 사이
에 띄어쓰기가 아니라 tab 이어야 한다.
복사 붙여넣기를 하게 되면 띄어쓰기로 붙여넣어지므로 반드시 tab 으로 바꿔주자
참고:
MongoDB 에 넣는 데이터 형식 : https://docs.mongodb.com/manual/reference/program/mongoimport/#synopsis
Bash 파일 한 줄씩 읽기 : https://zetawiki.com/wiki/Bash_%ED%8C%8C%EC%9D%BC_%ED%95%9C%EC%A4%84%EC%94%A9_%EC%9D%BD%EA%B8%B0
'MongoDB' 카테고리의 다른 글
[MongoDB] mongo java driver 에서 aggregate 사용하기 (0) | 2019.02.28 |
---|---|
[MongoDB] sudo service mongod start 가 실행되지 않을 때 (0) | 2019.01.29 |
[MongoDB] config servers 세팅 에러 하나 (0) | 2018.11.30 |
[Google Dataproc] MongoDB 설치하기 (0) | 2018.09.28 |
[Ubuntu] mongodb 설치하는 방법 링크 (0) | 2018.08.20 |