.csv
파일은 스프레드시트에서 데이터를 내보낼 때 사용하는 파일 형식입니다.
아래와 같은 유저 데이터 csv
파일이 있습니다.
$ cat users.csv
rich, Richard Blum, address1, Goyang, 60000
christine, Christine Bresnahan, address2, Seongnam, 60001
barbara, Barbara Blum, address3, Seoul, 60002
tim, Timothy Bresnahan, address4, Guri, 60003
이 csv
의 유저 데이터를 가지고 MySQL
데이터베이스에 레코드를 삽입하는 INSERT
쿼리를 작성해서 .sql
파일로 저장하는 예제를 수행해 보겠습니다.
$ cat csvtosql
#!/bin/bash
outfile="users.sql"
IFS=','
if [ -n "$1" ]
then
while read cname name address city zip
do
cat >> $outfile << EOF
INSERT INTO users (cname,name,address,city,zip) VALUES ('$cname','$name','$address','$city','$zip');
EOF
done < $1
else
echo "Needed .csv file..."
fi
$ ./csvtosql
Needed .csv file...
$ ./csvtosql users.csv
$ cat users.sql
INSERT INTO users (cname,name,address,city,zip) VALUES ('rich',' Richard Blum',' address1',' Goyang',' 60000');
INSERT INTO users (cname,name,address,city,zip) VALUES ('christine',' Christine Bresnahan',' address2',' Seongnam',' 60001');
INSERT INTO users (cname,name,address,city,zip) VALUES ('barbara',' Barbara Blum',' address3',' Seoul',' 60002');
INSERT INTO users (cname,name,address,city,zip) VALUES ('tim',' Timothy Bresnahan',' address4',' Guri',' 60003');
코드 리뷰
outfile="users.sql"
:users.sql
파일에INSERT
쿼리를 저장합니다.IFS=','
:users.csv
파일은,
를 기준으로 구분되어 있으므로 필드 구분자를,
로 지정합니다.if [ -n "$1" ]
: 파라미터로 반드시.csv
파일을 받게 되어 있기 때문에 파라미터를 주지 않을 시 예외처리 구문입니다.cat >> $outfile << EOF
:users.sql
파일에EOF
가 나올때 까지의 내용을 저장합니다.done < $1
: 파라미터.csv
파일의 내용을 입력 받습니다.