펄 & SQL 프로그래밍

아아, 이틀밤을 우분투와 씨름하느라 5-6시간 씩 밖에 못자고…
오늘은 회사에 일찍 여느때처럼 일찍 왔더니 시애틀에 폭우가 쏟아져서 그쪽 네트워크 다운문제로 일 해야 되는 것도 못하고 다들 휴가 분위기에 돌입 해버렸습니다.
인턴(코압)인 몸이라 눈치보여서 막 놀지는 못하겠고, 테스팅에 쓰일 펄 스크립트 끄적 거리다가 나중에 도움이 될까 싶어서 이렇게 링크 걸어봅니다.

Using Perl DBI to interface to MySQL

A Simple Query

위 둘에서 포인트는 아무래도,

@row = $sth->fetchrow_array 랑
print “@row” 라지요…

fetchrow_array는 한번에 한줄 씩 불러오는 역할을 하고, 불러온 쿼리 결과를 row 배열에 저장한 뒤 바로 프린트해주면 한줄 씩 화면에 출력됩니다.

Retrieve data from a PostgreSQL database using the Perl DBI

위 링크에서 포인트는 바로,

while(my $ref = $sth->fetchrow_hashref()) 과,

print “$ref->{‘name’} is a $ref->{‘species’}”; 입니다.

fetchrow_hashref는 칼럼마다 레퍼런스를 걸 수 있게 해줍니다. (표현이 조금 부족했네요. 뭐라고 말을 해야 할지, 마땅한 단어가 생각이 안납니다.)

예를 들어, select name, species from animals 라는 SQL 문의 쿼리 결과를 좀 더 보기 쉽게 출력해주려면, fetchrow_hashref 이후에 위의 프린트 문, print “$ref->{‘name’} is a $ref->{‘species’}”; 을 쓰게 되는 겁니다. 화면상에는 Niko is a cat 이런 식으로 나오겠죠.

또 한가지 쓸만한 게 있다면, 펄 언어와 직접적인 관계가 있는 건 아니지만, SQL 문 작성할 때, 쿼리 결과를 제한할 수 있다죠. 테이블 안에 수많은 데이터가 기록되어 있다면, LIMIT 은 필수입니다. ORDER BY 와 LIMIT 의 조합은 항상 최신의 데이터만 뽑아내는 데 굉장히 유용합니다.

예) select * from TABLE_NAME ORDER BY gmt_time desc LIMIT 1;

위 SQL 문은 하나의 테이블에서 (gmt_time 이라는 칼럼이 있다는 가정하에) 항상 최근의 데이터를 뽑아줍니다. (음 적어도 제가 하는 일과 관련되어선 말이에요)

2 Replies to “펄 & SQL 프로그래밍”

Comments are closed.