누군가 요청해서 재미삼아 만들었음..
mongodb를 mysql에서 불러들이는 방법은 몇 가지가 있는데요..
1. mongodb에 mysql 모듈을 설치해서 mysql에서 호출하는 방법..
-> 설정이 많이 필요해서 귀찮음
2. mongodb에 mysql 5.7이후라면 json import를 이용해서 json으로 집어넣는 방식
-> mongodump를 이용해서 json 파일로 넣고 json_import를 이용해서 테이블에 넣으면 되기 때문에 간단한 명령으로 쉽게 정리 됨.
단점은 KVS(Key Value Store)로 저장되기 때문에 쿼리가 살짝 귀찮아짐.. 기존 쿼리를 사용할 수 없다.
SELECT doc->>"$.name" AS name FROM test.my_restaurants WHERE doc->>"$.cuisine" = "Italian"
요런 느낌으로 쿼리를 짜야 함.
3. mongodump로 json으로 떨군 뒤에 jq로 읽어서 쉘로 필드를 뽑은 뒤에 mysql커맨드로 insert처리를 함.
#!/bin/bash
# Useful date text
TodayYYYYMMDDHH24MISS=`date '+%Y%m%d%H%M%S'`
TodayYYYYMMDD=`date '+%Y%m%d'`
TomorrowYYYYMMDD=`date +%Y%m%d --date '1 day'`
YesterdayYYYYMMDD=`date +%Y%m%d --date '1 day ago'`
NextMonthYYYYMMDD=`date +%Y%m%d --date '1 month'`
PrevMonthYYYYMMDD=`date +%Y%m%d --date '1 month ago'`
delete sqldump.sql
jdata=`cat export.json | jq -r`
jlen=$(echo $jdata | jq length)
for jitem in $( seq 0 $(($len - 1)) ); do
field1=$(echo $jdata | jq .field1.[$jitem])
field2=$(echo $jdata | jq .field2.[$jitem])
field3=$(echo $jdata | jq .field3.[$jitem])
if [ "$field1" != '' ]
then
echo "${s} \n insert into tablename (F1, F2, F3) values ($field1, $field2, $field3)" >>sqldump.sql
fi
done
그밖에 git등으로 제공하는 export 툴이나 T3등을 이용한 GUI툴 등 다양한 방법으로 데이터 처리가 가능합니다.
댓글
댓글 쓰기