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>

aaaaa bbbbb cccccc ddddddd

eeee fffff 111111 gggggg rrrrrrr oooooo ppppppp

llllll 2 22233344 5556677 8899 



//txt 파일을 csv 파일로 만드는 스크립트 파일을 만든다.

vi txt_2_csv.sh


<txt_2_csv.sh>

#!/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 



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





+ Recent posts