Wednesday, November 11, 2009

Interkoneksi PERL dengan MS SQL Server di Ubuntu.


Interkoneksi PERL dengan MS SQL Server di Ubuntu.
Requirement:
1.       Update Module perl DBI
2.       Install FreeTDS
3.       Install Module perl DBD::Sybase

1.       Update Module perl DBI
Ada dua opsi untuk melakukan update, yaitu dengan melakukan instalasi manual (compile dari source) dan instalasi melalui CPAN Console).
-          Instalasi melalui source
Install module tersebut sesuai dengan panduan yang ada di README

-          Instalasi melalui CPAN Console
Jalankan command ini sebagai root

perl -MCPAN -e shell
http://:untuk setting ftp_proxy dan http_proxy>
Jika prompt sudah menunjukkan “cpan>” jalankan command

install DBI

System akan melakukan update module DBI. Jika prompt “cpan>” muncul kembali, jalankan command install DBI, jika outputnya “DBI is up to date.” Maka module DBI sudah terupdate.

2.       Install FreeTDS.
-          Upload file source di /usr/local/src
-          Jalankan command berikut

tar xzvf freetds-stable.tgz
cd freetds-0.82
./configure --with-tdsver=7.0 --prefix=/usr/local/freetds
make
make install

-          Set environment variable sebagai berikut
export export SYBASE=/usr/local/freetds
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/freetds/lib

-          Tambahkan dua baris tersebut pada file /etc/profile, agar variable tersebut bisa tetap ada pada saat mesin restart


Notes: Jika ada error compiler belum diinstall, maka terlebih dahulu install paket “build-essential” dengan command: apt-get install build-essential
3.       Install Module perl DBD::Sybase
-          Upload file source di /usr/local/src
-          Jalankan command berikut

tar xzvf DBD-Sybase-1.07.tar.gz
cd DBD-Sybase-1.07
perl Makefile.PL


-          Setelah proses selesai, edit file “dbdimp.c” yaitu tambahkan code berikut diatas fungsi “void syb_init(dbistate)”

#undef CS_VERSION_150
#undef CS_VERSION_125
#undef CS_VERSION_120
#undef CS_DATE_TYPE
#undef CS_BIGINT_TYPE

-          Setelah pengeditan selesai, jalankan command berikut

make
 make install








Testing Script.

1.       Untuk melakukan testing koneksi dengan MS SQL Server

#!/usr/bin/perl


use DBI;

my $user   = "user";
my $passwd = "password";

my $dbh = DBI->connect("DBI:Sybase:server=", $user, $passwd, {PrintError => 0});

unless ($dbh) {
    die "Unable for connect to server $DBI::errstr";
}

my $sth;

$sth = $dbh->prepare("select \@\@servername");

if ($sth->execute) {
    while(@dat = $sth->fetchrow) {
      print "SERVER IS: @dat\n";
    }
}

exit(0);

Output:

ipunk@xxx:~/sql_server$ perl query.pl
SERVER IS: MSSQLSERVER
ipunk@xxx:~/sql_server$

2.       Melakukan query di database

#!/usr/bin/perl

#
# test the db2 dbi driver
#

use DBI ;

our $tbl_interaction; our $tbl_participant; our $sql_nice;

our $rsConnect;our @datatampil;


my $user   = "user";
my $passwd = "password";

my $dbh = DBI->connect("DBI:Sybase:server=", $user, $passwd, {PrintError => 0});

$dbh->do("dbase name");
                       
$tbl_interaction = tblInteraction . "01";
$tbl_participant = tblParticipant . "01";
                       
                        $sql_nice = "select DISTINCT(a.dtInteractionLocalStartTime) as StartTime,a.dtInteractionLocalStopTime as ".           
            "StopTime, b.nvcPhoneNumber as MSISDN,b.nvcAgentID as ".
            "LoginID FROM tblInteraction01 a, tblParticipant01 b ".
                                                                        "WHERE a.iInteractionID=b.iInteractionID ".
                                               
                                                                        "and a.dtInteractionLocalStartTime between '2009-03-01 00:00:00' and '2009-03-31 23:59:59' ";


 $rsConnect = $dbh->prepare($sql_nice)
                                                                                                                                   or die "Couldn't prepare statement: $sql_nice -->" . $dbh->errstr;
                                                                                                                       
                                                                                                                        # execute sql source
                                                                                                                        $rsConnect->execute
                                                                                                                                  or die "Couldn't execute statement: $sql_nice -->" . $rsConnect->errstr;        
                                                                                                                                                                         
                                                                                                                                                                         
                                                @datatampil = $rsConnect->fetchrow_array();            
                                               
                                                while(@datatampil = $rsConnect->fetchrow_array())
                                                {
                                                 print "Starttime : @datatampil[0]";
                                                 print "Stoptime  : @datatampil[1]";
                                                 print "Connected Number : @datatampil[2]";
                                                 print "LoginID : @datatampil[3]";
                                                }


Sumber:



Saturday, November 7, 2009

Hidup

Lelah setelah seharian ini berkutat dengan rutinitas kantor. Akupun membereskan segala sesuatu yang ada di mejaku. Jam telah menunjukkan pukul setengeah sebelas malam.

"Ndang mulih le ... ", kata atasanku.
"Ayo mas,", kataku dengan suara lelah

Seperti hari hari sebelumnya, divisi tempatku bekerja sudah terbiasa pulang lebih malam dari divisi yang lain, entah karena kerjaan, ada masalah di infrastruktur atau cuman sekedar download atau browsing sana sini. Tapi kebetulan malam ini, aku diminta untuk melakukan perubahan code di aplikasi yang aku buat, agar bisa dipresentasikan di depan para Team Leader hari senin minggu depan.

Keluar dari gedung kantor, angin malam yang basah berembus menerpa wajahku.

"Hmmm, segarnya", bisikku dalam Hati.

Aku dan atasanku berjalan gontai menuju tempat parkir, disana aku memesan dua mobil operasional untuk mengantar kami berdua pulang. Atasanku yang pulang ke jurusan Mampang pergi terlebih dahulu, Mas Sopir yang mengantarku datang 5 menit kemudian.

Hembusan AC mobil yang lembut, semakin membuatku merasa nyaman dan mengantuk. Di tengah perjalanan. Mas Sopir bilang,

"Mas, ntar kita ke pom bensin dulu ya, mau ngisi dulu neh"
"Oke mas, gak popo", ujar ku.

Mobil pun memasuki pom bensin di daerah pejompongan, pikirku ini kesempatan baik buat mejamin mata walo sebentar. Namun tiba tiba saja rasa kantukku hilang, ada pemandangan yang mengusik mataku di seberang pom bensin sana.

Aku melihat seorang lelaki paruh baya, sedang memikul dagangannya. Aku perhatikan wajahnya, dia memakai topi, kulit wajahnya hitam berminyak, dengan pandangan lelah. Dari kedua tangannya, muncul urat urat vena yang menonjol keluar, bukan menunjukkan kekekaran otot, melainkan menunjukkan otot yang terus digerus dengan beban tiada henti.

Aku pun mengalihkan pandangan ke dagangan yang berusaha ia jual. Bapak itu menjual jajanan yang mungkin namanya yang aku tahu "semprong". Dan semua jajanan itu masih utuh, masih banyak. Aku tak habis pikir, jam berapa dia mulai berjualan, hingga pada saat mendekati jam sebelas malam ini, dagangan yang ia jual masih saja banyak.

Iba, kasihan, itu perasaan yang langsung timbul dalam hatiku. Tidak beberapa lama, Mas Sopir telah kembali menjalankan mobil, mengantarku kembali ke kosan. Dalam perjalanan, aku berpikir, jika dibandingkan aku dengan bapak yang jualan semprong tadi. Tentu bapak itu lebih merasa lelah daripada lelah yang sekarang ini aku rasakan. Bapak itu menikmati hembusan AC yang sejuk, tidak menikmati getaran mobil yang membuat badan menjadi nyaman. Sedangkan aku kalo tidak salah, masih sempet menggerutu, kalau aku diberi tugas yang agak berat, meskipun tugas itu masih aku kerjakan di dalam ruangan ber AC, meskipun tugas itu tidak menyuruhku untuk memikul dagangan yang berat. Meskipun tugas itu tidak membuatku harus menghirup polusi udara Ibu Kota.

Aku memang sering mendengar banyak orang bicara mengenai pentingnya bersyukur, tapi aku jarang bisa memahaminya, aku masih sempat memikirkan membeli ini itu yang sebetulnya cuma untuk memuaskan nafsu sesaat. Tapi malam itu, bapak penjual itu, benar benar bisa membuatku mengerti apa yang dimaksud dengan "Bersyukur".

Sesampainya di kosan, sebisa mungkin aku melakukan sholat dengan Khusyu.

Ya Allah, ampuni HambaMU ini ....