정규식을 활용한 Underscore / Camel Case 전환 : INSERT 쿼리 생성
2023. 8. 11. 01:19ㆍ리눅스 실제 사용 팁/bash
필요해서 퇴근 후에 만들었는데 현실에서 막상 사용하려고 하니 인터넷이 안되는 환경이었다.
#!/bin/bash
# 활용법 :
1번 인자 : 테이블명
2번 인자 : ("_"로 구분된) 컬럼명이 들어 있는 파일
function usage {
prog_nm=$(basename $0)
echo 'usage :'
echo -e '\t'${prog_nm} 'table-name' 'camel-case-file'
echo or
# 테이블명을 지정하지 않으면 컬럼명만 처리함
echo -e '\t'${prog_nm} 'camel-case-file'
}
[[ $# -lt 1 ]] && usage && exit 0
function genSQL {
[[ ! -f $FILE ]] && usage && exit 1
if [ ! -z $TB_NAME ];then
echo -e 'INSERT INTO' $TB_NAME
echo -e '('
fi
let "cnt=1"
for src in $(cat $FILE);do
LINE=$(echo ${src} | sed -E 's/\B([[:upper:]])/_\1/g' | sed -E 's/([a-zA-Z].*)/\U\1/g')
if [ $cnt -eq 1 ];then
echo ' '$LINE
else
echo , $LINE
fi
let cnt++;
done
if [ ! -z $TB_NAME ];then
echo -e ') VALUES ('
fi
let "cnt=1"
for src in $(cat $FILE);do
if [ $cnt -eq 1 ];then
echo ' ${#'${src}'}'
else
echo , '${#'${src}'}'
fi
let cnt++;
done
if [ ! -z $TB_NAME ];then
echo -e ')'
fi
}
if [ $# -eq 1 -a -f $1 ];then
FILE=$1
genSQL
else
TB_NAME=$1
FILE=$2
genSQL
fi
테스트 방법 :
./camel_to_snake_INSERT.sh AAA src.txt
컬럼파일 :
"src.txt" 내용
EmployeeId
LastName
FirstName
Title
ReportsTo
BirthDate
HireDate
Address
City
State
Country
PostalCode
Phone
Fax
Email
실행 결과 :
INSERT INTO AAA
(
EMPLOYEE_ID
, LAST_NAME
, FIRST_NAME
, TITLE
, REPORTS_TO
, BIRTH_DATE
, HIRE_DATE
, ADDRESS
, CITY
, STATE
, COUNTRY
, POSTAL_CODE
, PHONE
, FAX
, EMAIL
) VALUES (
${#EmployeeId}
, ${#LastName}
, ${#FirstName}
, ${#Title}
, ${#ReportsTo}
, ${#BirthDate}
, ${#HireDate}
, ${#Address}
, ${#City}
, ${#State}
, ${#Country}
, ${#PostalCode}
, ${#Phone}
, ${#Fax}
, ${#Email}
)
먼저 작성했던 글 :
'리눅스 실제 사용 팁 > bash' 카테고리의 다른 글
read, awk - 한 줄 읽어서 여러 변수에 할당하기 (0) | 2023.12.30 |
---|---|
date, read -p, while 을 활용한 정합성 검사 loop 로직 (0) | 2023.12.23 |
[리눅스] AWK 에서 셸 명령 호출하기 (0) | 2023.08.01 |
[리눅스] AWK 에서 substring, index (0) | 2023.08.01 |
awk (0) | 2023.08.01 |