¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢perl¤«¤éDBD·Ðͳ¤ÇPostgreSQL¤òÁàºî¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ëÀßÄê¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
perl¥¹¥¯¥ê¥×¥È¤«¤éPostgreSQL¤òÍøÍѤ¹¤ë¤Ë¤Ï¡¢DBD-Pg¤È¤¤¤¦perl¥â¥¸¥å¡¼¥ë¤òÍøÍѤ·¤Þ¤¹¡£
FreeBSD¤Ç¤Ï¡¢¤³¤Îperl-PostgreSQL¤È¤ÎÏ¢·ÈÍѤΥ⥸¥å¡¼¥ë¤Ï¡¢¡Öp5-DBD-Pg¡×¤Î̾Á°¤Çports¤È¤·¤ÆÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
p5-DBD-Pg¤ÏPostgreSQL¤äperl¡¢mod_perlÅù¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤â¼«Æ°Åª¤Ë¤ÏƳÆþ¤µ¤ì¤Þ¤»¤ó¤Î¤Ç¡¢ÊÌÅÓ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥¤¥ó¥¹¥È¡¼¥ë¤Ë¤Ïports¤òÍøÍѤ·¤Þ¤¹¡£
ports¤¬¤Þ¤ÀŸ³«¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¡ÖºÇ¿·¤Îports¤ò¼èÆÀ¤·¤ÆÅ¸³«¤¹¤ë¡×¤ò»²¾È¤·¤ÆºÇ¿·¤Îports¤òÆþ¼ê¤·¡¢Å¸³«¤·¤Æ¤¯¤À¤µ¤¤¡£
ports¤ÎŸ³«¤¬´°Î»¤·¤¿¸å¡¢²¼µ¼ê½ç¤Çp5-DBD-Pg¤òmake¤·¡¢¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
$ cd /usr/ports/databases/p5-DBD-Pg $ make config-recursive $ make install clean
¥¤¥ó¥¹¥È¡¼¥ë´°Î»¸å¤ÎÀßÄêÅù¤ÏÆÃ¤Ë¤¢¤ê¤Þ¤»¤ó¡£
¾åµ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤¬´°Î»¸å¡¢perl¤«¤éDBI¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍøÍѤ·¤ÆPostgreSQL¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
´ðËÜŪ¤Ê¼ê½ç¤Ï¡¢
(1) DBI->connect() ¤ÇDB¤ò³«¤¯
(2) ¾åµ¡¤Ç¼èÆÀ¤·¤¿DB¥Ï¥ó¥É¥é¤ËÂФ·¡¢prepare() / execute() ¤òȯ¹Ô¤·SQLʸ¤ò¼Â¹Ô
(3) ¾åµ¢¤Ç¼èÆÀ¤·¤¿¥¹¥Æ¡¼¥È¥á¥ó¥È¥Ï¥ó¥É¥é¤ËÂФ·¡¢fetch() ¤òȯ¹Ô¤·SQLʸ¤Î·ë²Ì¤ò¼èÆÀ
(4) ¾åµ¢¤Ç¼èÆÀ¤·¤¿¥¹¥Æ¡¼¥È¥á¥ó¥È¥Ï¥ó¥É¥é¤ËÂФ·¡¢finish() ¤òȯ¹Ô¤·¼Â¹Ô·ë²Ì¤ò¥¯¥ê¥¢
(5) ¾åµ¡¤Ç¼èÆÀ¤·¤¿DB¥Ï¥ó¥É¥é¤ËÂФ·¡¢close() ¤òȯ¹Ô¤·¡¢DB¤òÊĤ¸¤ë
¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
°Ê²¼¤ËDB¤«¤é¥Ç¡¼¥¿¤òÆÉ¤ó¤Ç¤¯¤ë´Êñ¤Êperl¥¹¥¯¥ê¥×¥È¤È¡¢¥Æ¥¹¥ÈÍѤÎDB¤Î¹½ÃÛ¤ò¤¹¤ë¤¿¤á¤ÎSQL¥Õ¥¡¥¤¥ë¤òÍѰդ·¤¿¤Î¤Ç¡¢Æ°ºî³Îǧ¤Ë¤´ÍøÍѤ¯¤À¤µ¤¤¡£
¤Þ¤º¡¢¥Æ¥¹¥ÈDB¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤ÎSQL¥Õ¥¡¥¤¥ë¤òÍѰդ·¤Þ¤¹¡£
°Ê²¼¤ÎÆâÍÆ¤ò¡Ötest.sql¡×¤È¤·¤ÆÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡£
SET client_encoding = 'UTF8'; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = public, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; CREATE TABLE person ( name character varying(256), age integer ); ALTER TABLE public.person OWNER TO pgsql; COPY person (name, age) FROM stdin; Oblien 32 Oliver 45 Nielsen 18 \. REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM pgsql; GRANT ALL ON SCHEMA public TO pgsql; GRANT ALL ON SCHEMA public TO PUBLIC;
¼¡¤Ë¡¢¥Æ¥¹¥ÈDB¤òºîÀ®¤·¡¢¤½¤ÎÃæ¤ËÀè¤Û¤É¤ÎSQL¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤òή¤·¹þ¤ß¤Þ¤¹¡£
$ su pgsql $ createdb postgresql_test $ psql -f test.sql postgresql_test
¤³¤ì¤ÇDB¦¤ÎÀßÄ꤬´°Î»¤·¤Þ¤·¤¿¡£
ºÇ¸å¤Ë¡¢²¼µ¤Î¤è¤¦¤Êperl¥¹¥¯¥ê¥×¥È¤òÍѰդ·¤Æ¼Â¹Ô¤·¤Æ¤ß¤Þ¤¹¡£
#!/usr/local/bin/perl use DBI; $aHost = 'localhost'; $aDBName = 'postgresql_test'; $aTableName = 'person'; $aUser = 'pgsql'; $aPassword = ''; $tDBHandler=DBI->connect("DBI:Pg:host=$aHost;dbname=$aDBName",$aUser,$aPassword); $tStatementHandler=$tDBHandler->prepare("SELECT name,age from $aTableName"); $tResult=$tStatementHandler->execute(); while(@RESULT=$tStatementHandler->fetchrow()) { print $RESULT[0].','.$RESULT[1]."\n"; } $tStatementHandler->finish(); $tDBHandler->disconnect();
Oblien,32 Oliver,45 Nielsen,18
¾åµ¤Î¤è¤¦¤Êɽ¼¨¤¬½Ð¤¿¤é¡¢¥Æ¥¹¥È¤ÏÀ®¸ù¤Ç¤¹¡£
¡¦Äº¤¤¤¿¥á¥Ã¥»¡¼¥¸¤Ï´ÉÍý¼Ô¤Î¥Á¥§¥Ã¥¯¤Î¸å¡¢¸ø³«¤µ¤ì¤Þ¤¹¡£
¡¦¥á¥Ã¥»¡¼¥¸¤Î¸ø³«¤ò´õ˾¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¡Ö¤³¤Î¥á¥Ã¥»¡¼¥¸¤òÈó¸ø³«¤Ë¤¹¤ë¡×¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£
¡¦´ÉÍý¼Ô¤¬ÉÔŬÀÚ¤ÈȽÃǤ·¤¿¥á¥Ã¥»¡¼¥¸¤Ï¸ø³«¤·¤Þ¤»¤ó¤Î¤Ç¡¢Í½¤á¤´Î»¾µ¤¯¤À¤µ¤¤¡£
¤Þ¤Àɾ²Á¤¬¤¢¤ê¤Þ¤»¤ó |
ɽ¼¨¤Ç¤¤ë¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó¡£