�O��܂ł�PostgreSQL�̗��j��C���X�g�[�����@�ɂ��Đ������Ă����B����́A���ۂ�PostgreSQL��Perl��C������g�����A�v���P�[�V�������J��������@�ɂ��ĉ������B
�@PostgreSQL�͂��낢��Ȍ���Ƃ̃C���^�[�t�F�C�X�������Ă��܂����A����͑�\�I�ȂƂ���Ƃ��āAPerl��C����ł̃C���^�[�t�F�C�X��APostgreSQL�ƈ�ԑg�ݍ��킹�Ďg���邱�Ƃ������Ǝv����Apache�����PHP3���g���ẴA�v���P�[�V�����J���ɂ��Ă������������Ǝv���܂��B
�@��������ɂ��Ă��A�f�[�^�x�[�X���Ȃ���Θb�ɂȂ�܂���B�����ŁA����Љ��v���O�����Ŏg�����߂̃T���v���f�[�^�x�[�X���쐬���܂��傤�B�Ƃ肠�����A�����Ɠd�b�ԍ�����ѓd�q���[���A�h���X���Ǘ�����ȈՃA�h���X���Ƃ������Ƃɂ��܂��B
�@�܂��APostgreSQL�̃v�����v�g��create table���s���āA�e�[�u�����`���܂��B
postgres=> create table addrbook (name varchar(50),telno varchar(50), email varchar(50));
�@�e�[�u�����쐬�ł�����e�X�g�f�[�^����͂���̂ł����A�ꂩ��쐬����̂͑�ςȂ̂ŁA��ɗp�ӂ��Ă������f�[�^����R�s�[���邱�Ƃɂ��܂��B
�@�ȉ��̓��e�̃e�L�X�g�t�@�C����p�ӂ��Aaddrbook.txt�Ƃ����t�@�C�����ŕۑ����܂��B�X�y�[�X�̕�����TAB�ɂ��Ă��������B
R.Munechika 070-6682-**** [email protected] H.Nishida 090-****-**** [email protected] T.Miyahara 090-9999-9999 [email protected]
�@���̃t�@�C����copy�R�}���h���g���ăC���|�[�g���܂��B
postgres=> \copy addrbook from addrbook.txt Successfully copied.
�@�R�s�[���ꂽ���e���m�F���܂��B
postgres=> select * from addrbook; name |telno |email -----------+-------------+---------------------------- R.Munechika|070-6682-****|[email protected] H.Nishida |090-****-****|[email protected] T.Miyahara |090-9999-9999|[email protected] (3 rows)
�@�ȏ�ŃT���v���f�[�^�x�[�X�̗p�ӂ��ł��܂����B
�@PostgreSQL��Perl����A�N�Z�X����ɂ́A�C���^�[�t�F�C�X�����Ȃ���Ȃ�܂���B
�@PostgreSQL�̃\�[�X��W�J�����f�B���N�g���ɂ���src/interfaces/perl5�f�B���N�g���Ɉړ����܂��i�����ł́A/usr/local/src/postgresql-6.5.3�Ƃ��܂��j�B
$ cd /usr/local/src/postgresql-6.5.3/src/interfaces/perl5
�@�����ŁAMakefile.PL��Perl������s���܂��B
$ perl Makefile.PL
�@�R���p�C�������s���܂��B
$ make
�@root�ɂȂ��ăC���X�g�[�����s���܂��B
$ su # make install
�@Perl��PostgreSQL�ɍ쐬�����f�[�^�x�[�X�e�[�u���̕\�����s���v���O�������쐬���Ă݂܂��B�ȉ��́A��قǍ쐬�����e�[�u���̓��e��\������ȒP�ȃv���O�����̃��X�g�ł��B
#!/usr/bin/perl use Pg; $dbname = "postgres"; $conn = Pg::connectdb("dbname=$dbname"); $res = $conn-> exec("select * from addrbook"); print "name telno email\n"; print "--------------------------------------\n"; while(@item = $res-> fetchrow) { print "@item[0] @item[1] @item[2]"; print ("\n"); }
�@1�s�ڂ�Perl�̎��s�t�@�C���̐�p�X���w�肵�܂��Bwhich�Ȃǂ̃R�}���h�Œ��ׂāA�e���̊��ɍ��킹�Ă��������B3�s�ڂ��f�[�^�x�[�X���̎w��ŁA6�s�ڂ��f�[�^�x�[�X�ɑ��Ď��ۂ�SQL���s���镔���ł��B
�@8�`13�s�ڂ܂ł��\�����s�������ɂȂ�܂��B�܂�10�`13�s�ڂŃ��[�v���s���A1�s����fetch���s���ă��R�[�h���擾���Aprint�ŏo�͂��܂��B
�@���Ƀ��R�[�h�lj����s���T���v���v���O����test2.pl�ɂ��Đ������܂��B
#!/usr/bin/perl use Pg; $dbname = "postgres"; $conn = Pg::connectdb("dbname=$dbname"); $res = $conn-> exec("insert into addrbook values('K,Hamano','070-8888-8888','hamano\@email.net')"); if ( $res -> resultStatus == PGRES_COMMAND_OK ) { print "OK\n" } else { print "NG\n" }
�@5�s�ڂ܂ł�test1.pl�Ɠ����ł����A6�s�ڂ�SQL���̔��s�������قȂ�_�ɒ��ڂ��Ă��������B�܂��A�g@�h����͂���悤�ȏꍇ�́A�g\�h���g���ăG�X�P�[�v���邱�Ƃɒ��ӂ��Ă��������i���ۂ̃f�[�^�Ɂg\�h�͓o�^����܂���j�B
�@8�`13�s�ڂ̓G���[�������L�q���Ă��܂��B���������܂����s�ł��Ȃ������ꍇ�́AresultStatus�ɁgPGRES_COMMAND_OK�h�ȊO�̃X�e�[�^�X��߂��Ă��܂��B
�@test2.pl�����s���Ă���\���p�̃v���O����test1.pl�����s����ƁA���R�[�h�̒lj����s���Ă���̂�������܂��B
[postgres@micky postgres]$ ./test2.pl OK [postgres@micky postgres]$ ./test1.pl name telno email -------------------------------------- R.Munechika 070-6682-**** [email protected] H.Nishida 090-****-**** [email protected] T.Miyahara 090-9999-9999 [email protected] K,Hamano 070-8888-8888 [email protected]
�@���ɁAC������g����PostgreSQL�̃f�[�^�x�[�X�e�[�u���̒��g��\�����Ă݂邱�ƂƂ��܂��B
/* �w�b�_�t�@�C����荞�� */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include "postgres.h" #include "libpq-fe.h" /* main���� */ int main(int argc,char **argv) { /* �ϐ���` */ char dbName[255] = "postgres"; /* �f�[�^�x�[�X���̓n�[�h�R�[�f�B���O */ char sql[255]; int i; PGconn *con; PGresult *res; char *kou1,*kou2,*kou3; /* DB�Ƃ̐ڑ� */ con = PQsetdb("","",NULL,NULL,dbName); if ( PQstatus(con) == CONNECTION_BAD ) { /* �ڑ������s�����Ƃ��̃G���[���� */ fprintf(stderr,"Connection to database '%s' failed.\n",dbName); fprintf(stderr,"%s",PQerrorMessage(con)); exit(1); } /* select���̔��s */ sprintf(sql,"select * from addrbook"); res = PQexec(con,sql); if (PQresultStatus(res) != PGRES_TUPLES_OK) { /* SQL�̎��s�Ɏ��s�����Ƃ��̃G���[���� */ fprintf(stderr,"%s",PQerrorMessage(con)); exit(1); } printf("name telno email\n"); printf("--------------------------------------\n"); for(i = 0; i < 3 ;i++) { kou1 = PQgetvalue(res,i,0); kou2 = PQgetvalue(res,i,1); kou3 = PQgetvalue(res,i,2); printf("%s %s %s\n",kou1,kou2,kou3); } PQclear(res); }
�@C����ŋL�q����ۂ́Apostgres.h��libpq-fe.h�̃C���N���[�h�����Y��Ȃ��B�܂��APQexec()���͈ȉ��̂悤�ɑ�2������SQL���������Ď��s���܂��B
/* select���̔��s */ sprintf(sql,"select * from addrbook"); res = PQexec(con,sql);
�@PQgetvalue()���̓f�[�^�x�[�X����l�����o�����̂ŁA��2�����Ɂu�s�v�A��3�����Ɂu��v���w�肵�܂��B�����āAPQgetvalue()���̖߂�l��printf()���Ő��`���ďo�͂��܂��B
kou1 = PQgetvalue(res,i,0); kou2 = PQgetvalue(res,i,1); kou3 = PQgetvalue(res,i,2); printf("%s %s %s\n",kou1,kou2,kou3);
�@�R���p�C�����́APostgreSQL�̃w�b�_�t�@�C���ƃ��C�u�����t�@�C�������݂���f�B���N�g���ɖ����I�Ƀp�X���ʂ�悤�ɂ��܂��B
cc -o test1 test1.c -I$POSTGRES_HOME/include -L$POSTGRES_HOME/lib -lpq -lnsl -lcrypt
/* �w�b�_�t�@�C����荞�� */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include "postgres.h" #include "libpq-fe.h" /* main���� */ int main(int argc,char **argv) { /* �ϐ���` */ char dbName[255] = "postgres"; /* �f�[�^�x�[�X���̓n�[�h�R�[�f�B���O */ char sql[255]; int i; PGconn *con; PGresult *res; /* DB�Ƃ̐ڑ� */ con = PQsetdb("","",NULL,NULL,dbName); if ( PQstatus(con) == CONNECTION_BAD ) { /* �ڑ������s�����Ƃ��̃G���[���� */ fprintf(stderr,"Connection to database '%s' failed.\n",dbName); fprintf(stderr,"%s",PQerrorMessage(con)); exit(1); } /* insert���̔��s */ sprintf(sql,"insert into addrbook values ('K,Hamano','070-8888-8888','[email protected]')"); res = PQexec(con,sql); if (PQresultStatus(res) != PGRES_COMMAND_OK) { /* SQL�̎��s�Ɏ��s�����Ƃ��̃G���[���� */ fprintf(stderr,"%s",PQerrorMessage(con)); exit(1); } PQclear(res); }
�@�\������v���O�����̕ύX����Perl�̃v���O�����̂Ƃ��Ɠ��l�ASQL���s����Ƃ����SQL������̖߂�l�f����Ƃ���ł��BC����ł�Perl�Ɠ����悤�ȏ������s���悢�Ƃ������Ƃ������ł���ł��傤�B
�@PHP3����PostgreSQL�ɃA�N�Z�X����ɂ́APHP3�����܂��B�����ł�DSO�ł�Apache���g�����̂Ƃ��Đ������܂��B�Ȍ�̑����root�ō�Ƃ��܂��B
# cd /usr/local/src # tar xfz apache_1.3.12.tar.gz # cd apache_1.3.12 # ./configure --enable-module=so # make # make install
# cd /usr/local/src # tar xfz php-3.0.15-i18n-ja.tar.gz # cd php-3.0.15-i18n-ja # ./configure --with-pgsql --with-apache=../apache_1.3.12 --enable-track-vars --with-apxs=/usr/local/apache/bin/apxs --enable-i18n --enable-mbregex # make # make install
�@Apache�̕W���̐ݒ�ł�PHP3�����s�ł��Ȃ��悤�ɂȂ��Ă��܂��̂ŁA�ݒ�t�@�C���ihttpd.conf�j��ҏW���܂��B
#AddType application/x-httpd-php3 .php3 #AddType application/x-httpd-php3-source .phps
�Ƃ������̃R�����g�s�́u#�v���폜���āA�ݒ��L�������܂��Bhttpd.conf��ҏW������A�K��Apache���ċN�����Ă��������B
�@PHP3�̃v���O������Perl��C����ł̃v���O�����Ƃ̑���_�́APHP3�̓T�[�o�T�C�h�Ŏ��s���A�N���C�A���g�iWeb�u���E�U�j�ŕ\������Ƃ����Ƃ���ɂ���܂��B
<HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC-JP"> <title> �ȈՃA�h���X�� </title> </HEAD> <BODY BGCOLOR="#FFFFFF"> <h1>�ȈՃA�h���X��</h1> <br> <hr> <br> <? /* Global variables. */ $dbname = "postgres"; /* DB name of PostgreSQL. */ $tbname = "addrbook"; /* table name of PostgreSQL. */ /* �f�[�^�x�[�X�Ƃ̐ڑ� */ $conn = pg_Connect("localhost", "5432", "", "", $dbname); if (!$conn){ echo "�f�[�^�x�[�X�̐ڑ��ŃG���[���������܂���<BR>\n"; exit; } /* SQL���̔��s */ $sql = "select * from $tbname"; $result = pg_Exec($conn, $sql); if (!$result) { echo "�����ŃG���[���������܂���<BR>\n"; exit; } $num = pg_numrows($result); echo "<TABLE BORDER=\"1\">\n"; echo "<TR><TD>���O</TD><TD>�d�b�ԍ�</TD><TD>���[��</TD></TR>\n"; for ($i = 0; $i < $num; $i++) { $row = pg_fetch_row($result, $i); echo "<TR><TD>" . $row[0] . "</TD><TD>" . $row[1] . "</TD><TD>" . $row[2] . "</TD></TR>\n"; } echo "</TABLE>\n"; ?> </BODY> </HTML>
�@PHP3�̕��@��C����ɂ悭���Ă���̂ŁAHTML�^�O�������ΐ�قǂ�C����̃T���v���v���O�����ƂقƂ�Ǖς��Ȃ����Ƃɂ��C�t���ɂȂ�ł��傤�B
�@����PHP3�ł̃��R�[�h�lj��v���O�����̗�������܂��BHTML�t�H�[���Ńf�[�^����͂��A����HTML�t�H�[������PHP3�v���O���������s���邱�Ƃɂ��o�^���s���܂��B���X�g6��PHP3�v���O�������Ăяo��HTML�A���X�g7��PHP3�v���O�����ł��B
<html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <title> �ȈՃA�h���X���i�lj��j </title> </head> <body bgcolor="FFFFFF"> <TABLE align="center" BORDER="0"> <TR><TD WIDTH="600"> <table align="center" border="5"> <TR> <TD align="center"> <FONT SIZE="5"><B>�ȈՃA�h���X���i�lj��j<BR> </B></FONT> </TD> </table> <br> �o�^���Ă������� <BR><BR> </TD></TR> </TABLE> <BR> <P align="right"> <hr> <form method="post" action="./test2.php3" NAME="myForm"> <TABLE ALIGN="CENTER" BORDER="1" WIDTH="600"> <input type="hidden" name="ename"> ��(*)�����Ă��鍀�ڂ́A�K�����͂��Ă��������B<BR> <TR> <TD WIDTH="100" BGCOLOR="#CCCCFF">���O (*)</TD><TD><input type="text" name="name" size="60" maxlength="80"></TD> </TR> <TR> <TD WIDTH="100" BGCOLOR="#CCCCFF">�d�b�ԍ� (*)</TD><TD><input type="text" name="telno" size="60" maxlength="80"></TD> </TR> <TR> <TD WIDTH="100" BGCOLOR="#CCCCFF">���[�� (*)</TD><TD><input type="text" name="email" size="60" maxlength="120"></TD> </TR> </TABLE> <center> <input type="submit" value="�o�^"><input type="reset" value="���Z�b�g"> </CENTER> </form> </body> </html>
<HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC-JP"> <title> �ȈՃA�h���X���i�lj��j </title> </HEAD> <BODY BGCOLOR="#FFFFFF"> <FORM ACTION="test2.php3" METHOD=POST> <H2> �ȈՃA�h���X���i�lj��j<BR> </H2> <? /* Global variables. */ $dbname = "postgres"; /* DB name of PostgreSQL. */ $tbname = "addrbook"; /* table name of PostgreSQL. */ /* �f�[�^�x�[�X�Ƃ̐ڑ� */ $conn = pg_Connect("localhost", "5432", "", "", $dbname); if (!$conn){ echo "�f�[�^�x�[�X�̐ڑ��ŃG���[���������܂���\n"; exit; } $sql = "insert into $tbname values ('$name','$telno','$email')"; $result = pg_Exec($conn, $sql); if (!$result) { echo "�f�[�^�x�[�X�ւ̓o�^�ŃG���[���������܂���<BR>\n"; exit; } echo "�o�^���܂���<BR>\n"; ?> </BODY> </HTML>
�@�����C����̗�Ɠ������A���܂�ς�肪�Ȃ����Ƃ���������ɂȂ�ł��傤�B
�@��1��̌��e�ɏ������Ƃ���APostgreSQL�ɂ̓��v���P�[�V��������������Ă��Ȃ����߂ɁA���ŋ߂܂ł�PostgreSQL���g�p���ăV�X�e���C���e�O���[�V�������s���̂͂��낢��Ƌ�J�����܂Ƃ��Ă��܂����B
�@�Ƃ��낪�A���v���P�[�V�������������邽�߂̎d�g�݂��ŋ߂ɂȂ��Č���Ă��܂����B1���A�M�҂̏������銔����Ѓf�W�^���f�U�C����2000�N11�����o�ׂ��J�n����uFCR for PostgreSQL�v�ł��B���̃\�t�g��2�̃T�[�o�Ԃ�Fast Connector Server��u���āAinsert���Ȃǂ̔��s���Ă���1�̃T�[�o�Ƀg���K���g���ă��v���P�[�V�������s���d�g�݂ɂȂ��Ă��܂��B�]���ł��_�E�����[�h�ł��܂��̂ŁA��x�������ɂȂ��Ă͂������ł��傤�B
�@�܂��A�������@�Ȃǂɂ��Ă͉��L��URL���Q�l�ɂȂ�܂��B
�@����1�̎����́A������ЃO�b�f�C�̍א삳��GPL2�Ō��J����Ă���uUsogres�v�ł��B
�@Usogres��PostgreSQL�̃v���L�V�Ƃ��ċ@�\����T�[�o�\�t�g�ł��BUsogres�Ŏ��s���ꂽSQL�̏�����������PostgreSQL�T�[�o�[�ɑ�����̂ŁA���ʓI�Ƀ��A���^�C���Ńo�b�N�A�b�v�����Ƃ������̂ł��B�������A�����I�ȈӖ��ł̃��v���P�[�V�����͂܂���������Ă��܂���B��҂̍א쎁�ɂ��ƁA����{�i�I�ȃ��v���P�[�V�����@�\����������Ƃ̂��ƂȂ̂ő傢�Ɋ��҂����Ă�\�t�g�ł��B
�@����܂�3��ɂ킽��PostgreSQL�̐������s���Ă��܂����BPostgreSQL�̊T�v�⓱�����@�A�A�v���P�[�V�����J���ɂ��āA�����悻�����ł����Ǝv���܂��B���̘A�ڂ��F����̂��d���ɐ�������邱�Ƃ�����Ă�݂܂���B
Copyright © ITmedia, Inc. All Rights Reserved.