µ¥ÀÌÅͺ£ÀÌ¿Í À¥À» ¿¬µ¿ÇϱâÀ§Çؼ´Â dB ¿£Áø ÀÚü¿¡¼ Á¦°øÇÏ´Â API¸¦ »ç¿ëÇϰųª API¿Í À¯»çÇÑ dB ¾î´ðÅ͸¦ »ç¿ëÇؾßÇÑ´Ù.
Perl·Î µ¥ÀÌÅͺ£À̽º¸¦ Á¢¼ÓÇϱâÀ§ÇÑ ¸¹Àº ¾î´ðÅÍ°¡ ÀÖÀ¸¸ç, msqlperlÀº Perl·Î mSQLÀ» Á¢¼ÓÇϱâÀ§ÇÑ ¾î´ðÅÍÀÌ´Ù. ±âº»ÀûÀ¸·Î´Â mSQL¿¡¼ Áö¿øÇÏ°íÀÖ´Â API ÇÔ¼ö¸¦ ÆÞ·Î ±¸ÇöÇÑ °ÍÀ̹ǷΠAPI¸¦ »ç¿ëÇÏ´Â °Í°ú °ÅÀÇ µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÇϸéµÈ´Ù.
ÆÞ°ú ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿À» À§ÇÑ ¸ðµâÀº ´ÙÀ½ URL¿¡¼ ±¸ÇÒ ¼ö ÀÖÀ¸¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù.
http://www.hermetica.com/
msqlperlÀÇ »ç¿ë
msqlperlÀ» »ç¿ëÇϱâÀ§Çؼ´Â msqlperlÀÇ Method¸¦ »ç¿ëÇϱâ Àü¿¡ ¹Ýµå½Ã ´ÙÀ½°ú °°Àº ¹®ÀåÀ» ¼öÇàÇØ¾ß ÇÑ´Ù.
use Msql;
msqlperlÀÇ ¸Å´º¾ó¿¡´Â use Msql2;¸¦ »ç¿ëÇϵµ·Ï µÇ¾îÀÖÁö¸¸ ½ÇÁ¦ ¼³Ä¡´Â Msql.pmÀ¸·Î µÇ¹Ç·Î use Msql2;¸¦ »ç¿ëÇϸé Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. µû¶ó¼ ¹Ýµå½Ã use Msql;À» »ç¿ëÇØ¾ß ÇÑ´Ù.
ÀÌ ¹®ÀåÀº ´ÙÀ½ ¹®Àå°ú Á¤È®È÷ µ¿ÀÏÇÑ ¹®ÀåÀÌ´Ù.
BEGIN {
requrie 'Msql.pm';
import Msql;
}
BEGINÀº ´Ù¸¥ °Íµé º¸´Ù ¿ì¼±Çؼ ó¸®Ç϶ó´Â ÆÞÀÇ Å°¿öµåÀÌ´Ù. ¹Ý´ë °³³äÀ¸·Î »ç¿ëÇÏ´Â END¶ó´Â Å°¿öµåµµ ÀÖ´Ù.
Áö¿ø ¸í·É¾î
# µ¥ÀÌÅͺ£À̽º ¿£Áø¿¡ Á¢¼Ó
$dbh = Msql->connect; # ·ÎÄ® dB ¿£Áø¿¡ Á¢¼Ó
$dbh = Msql->connect($host); # ¿ø°Ý dB ¿£Áø¿¡ Á¢¼Ó
$dbh = Msql->connect($host, $database); # À©°Ý dB ¿£Áø¿¡ Á¢¼ÓÇÑ ÈÄ,
# µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃ
# µ¥ÀÌÅͺ£À̽ºÀÇ ¼±ÅÃ
$dbh->selectdb($database); # µ¥ÀÌÅͺ£À̽ºÀÇ ¼±ÅÃ
# µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·Ï°ú Å×ÀÌºí ¸ñ·Ï
@arr = $dbh->listdbs; # µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·ÏÀ» °¡Á®¿È
@arr = $dbh->listtables; # Ç¥ÀÇ ¸ñ·ÏÀ» °¡Á®¿È
$error_message = $dbh->errmsg; # ÁúÀÇ ¼öÇà½Ã ¿À·ù¸Þ½ÃÁö¸¦ °¡Á®¿È
# µ¥ÀÌÅͺ£À̽º¿¡ ÁúÀǸ¦ Àü¼Û
$sth = $dbh->listfields($table); # Ç¥ÀÇ ½ºÅ°¸¶¸¦ °¡Á®¿È
$sth = $dbh->query($sql_statement); # SQL ¹®ÀåÀ» dB¿£ÁøÀ¸·Î Àü¼Û
# ÁúÀÇ °á°ú¸¦ °¡Á®¿È
@arr = $sth->fetchrow; # Ç¥ÀÇ ÇÑÇàÀ» °¡Á®¿È
%hash = $sth->fetchhash; # À§¿Í µ¿ÀÏÇÏÁö¸¸ ¿¬°ü¹è¿·Î °¡Á®¿È
$sth->dataseek($row_number); # Çà¿¡´ëÇÑ ¿É¼ÂÀ» º¯°æ
$sth->as_string; # ÁúÀÇ °á°ú¸¦ ¹®ÀÚ¿·Î °¡Á®¿È
# À妽º ó¸®
@indices = $sth->listindices; # mSQL 2.0¿¡¼¸¸ »ç¿ë °¡´É
@arr = $dbh->listindex($table,$index); # mSQL 2.0¿¡¼¸¸ »ç¿ë °¡´É
($step,$value) = $dbh->getsequenceinfo($table) # mSQL 2.0¿¡¼¸¸ »ç¿ë °¡´É
# ¸ÞŸµ¥ÀÌŸ. Å×ÀÌºí ½ºÅ°¸¶ Á¤º¸
$scalar = $sth->numrows; # Ç¥ÀÇ ÁÙ¼ö
$scalar = $sth->numfields; # Ç¥ÀÇ Çʵå¼ö
@arr = $sth->table; # °¢ ÇʵåÀÇ µ¥ÀÌºí ¸í
@arr = $sth->name; # Çʵå¸í
@arr = $sth->type; # °¢ ÇʵåÀÇ Å¸ÀÔ, msql.h¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç,
# Msql::CHAR_TYPE, Msql::INT_TYPE,
# Msql::REAL_TYPE¸¦ ÅëÇØ Á¢±Ù°¡´ÉÇÏ´Ù.
@arr = $sth->isnotnull; # Not nullÀÎÁö¸¦ ÆÇÁ¤ÇÏ´Â ºÎ¿ï°ªÀÇ ¹è¿
@arr = $sth->isprikey; # Primary KeyÀÎÁö¸¦ ÆÇÁ¤ÇÏ´Â ºÎ¿ï°ªÀÇ ¹è¿
@arr = $sth->length; # ¹ÙÀÌÆ®·Î Ç¥ÇöµÈ °¢ ÇʵåÀÇ ±æÀ̸¦ °®´Â ¹è¿
¼³¸í
msqlperlÀº mSQL¿¡ Æ÷ÇԵǾî ÀÖ´Â C API¿Í °¡´ÉÇÑ ºñ½ÁÇÏ°Ô ¼³°èµÇ¾ú´Ù. msqlperlÀÇ ¶Ç´Ù¸¥ Ư¡Àº StudlyCaps¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù. StudlyCaps¿¡´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº ÀÌÀý µÞºÎºÐÀ» Âü°íÇϱ⠹ٶõ´Ù.
msqlperlÀº ³»ºÎÀûÀ¸·Î Msql¿Í Msql::StatementÀÇ µÎ°³ÀÇ Å©·¡½º¸¦ ó¸®ÇÏ°í ÀÖÁö¸¸ µÎ¹ø° Çü½ÄÀº °ÅÀÇ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ°ÍÀº query³ª listfield ¹®Àå¿¡ÀÇÇØ ¸®ÅϵǴ ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀ» ÅëÇØ ÀÚµ¿ÀûÀ¸·Î ÀÌ·ç¾îÁö¶§¹®ÀÌ´Ù. µû¶ó¼ »ç¿ëÀÚ°¡ »ç¿ëÇÒ À¯ÀÏÇÑ Å©·¡½º´Â MsqlÀÌ´Ù.
µ¥ÀÌÅͺ£À̽ºÀÇ Á¢¼Ó
msqlperlÀº ´ÙÀ½°ú °°Àº ¼¼°¡Áö ÇüÅÂÀÇ µ¥ÀÌŸº£À̽º Á¢¼Ó ¸í·ÉÀ» Á¦°øÇÑ´Ù.
$dbh = Msql->connect; # dB ¼¹ö¿Í À¥ ¼¹ö°¡ °°Àº È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì
$dbh = Msql->connect($host); # dB ¼¹ö¿Í À¥ ¼¹ö°¡ ´Ù¸¥ È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì
$dbh = Msql->connect($host, $database); # À§¿Í µ¿ÀÏÇϸç,
# Á¢¼Ó½Ã µ¥ÀÌŸ º£À̽º¸¦ ¼±ÅÃ
ÀÌ ¸í·ÉÀ» ÀÌ¿ëÇؼ »ç¿ëÀÚ´Â ¿øÇϴ ȣ½ºÆ®³ª µ¥ÀÌŸ º£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.
ù¹ø° ¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¾Ê°Å³ª ³Î ¹®ÀÚ¿À» ÁöÁ¤ÇÏ´Â °æ¿ì, msqlperlÀº UNIX ¼ÒÄÏ(ÀϹÝÀûÀ¸·Î /dev/msql)À» ÅëÇØ Á¢¼ÓÇÑ´Ù. ÀÌ °ÍÀº TCP¸¦ ÅëÇØ Á¢¼ÓÇÏ´Â °Íº¸´Ù ¼º´É¸é¿¡¼ ÈξÀ ¿ì¼öÇϹǷΠdB ¼¹ö¿Í À¥¼¹ö°¡ °°Àº È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì¿¡´Â ù ¹ø° ¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í »ç¿ëÇÏ´Â °ÍÀÌ ³´´Ù.
µÎ¹ø° ¸Å°³º¯¼ö·Î¼ µ¥ÀÌŸº£À̽ºÀÇ À̸§À» ÁÙ ¼öÀÖÀ¸¸ç, ÀÌ ¸Å°³º¯¼ö·Î Á¢¼Ó ÈÄ Æ¯Á¤ µ¥ÀÌŸº£À̽º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
Á¢¼Ó¿¡ ¼º°øÇÑ °æ¿ì¿¡´Â µ¥ÀÌÅͺ£À̽º ÇÚµéÀ» ¸®ÅÏÇÏ¸ç ±×·¸Áö ¸øÇÑ °æ¿ì¿¡´Â µ¥ÀÌÅͺ£À̽º ÇÚµéÀº Á¤ÀǵÇÁö ¾Ê´Â´Ù.
µû¶ó¼ µ¥ÀÌÅͺ£À̽º¸¦ Á¢¼ÓÇÑ ÈÄ ´ÙÀ½°ú °°Àº ÄÚµå·Î µ¥ÀÌÅͺ£À̽ºÀÇ Á¢¼Ó¿©ºÎ¸¦ È®ÀÎÇØ¾ß ÇÑ´Ù.
$dbh = Msql->connect;
defined($dbh) || die 'µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù';
³ªÁß¿¡ µ¥ÀÌŸ º£À̽º¿¡ Á¢±ÙÇϱâÀ§Çؼ´Â ÀÌ µ¥ÀÌŸº£À̽º ÇÚµéÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.
µ¥ÀÌŸº£À̽º ÇÚµé
À§¿¡¼ ¾ð±ÞÇÑ °Íó·³
$dbh = Msql->connect($host, $database);
·Î µ¥ÀÌŸº£À̽º ÇÚµéÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ µ¥ÀÌŸº£À̽º ÇÚµé·Î Á¢¼ÓµÈ ¼ÒÄÏ, È£½ºÆ®, µ¥ÀÌŸº£À̽º¸¦ ¾Ë ¼ö ÀÖ´Ù.
$scalar = $dbh->sock;
$scalar = $dbh->host;
$scalar = $dbh->database;
´ÜÁö ÇϳªÀÇ º¯¼ö·Î Á¢¼ÓÇϰųª, º¯¼ö¾øÀÌ Á¢¼ÓÇß´Ù¸é, È£½ºÆ®¿Í µ¥ÀÌŸº£À̽º´Â Á¤ÀǵÇÁö ¾ÊÀº °ªÀ» ¸®ÅÏÇÑ´Ù.
µ¥ÀÌÅͺ£À̽ºÀÇ ¼±ÅÃ
$dbh->selectdb($database); # dB ¼±ÅÃ. ¹Ýµå½Ã connect ¸í·ÉÀ¸·Î dB ¿£Áø¿¡ ¸ÕÀú
# Á¢¼ÓÇØ¾ß ÇÔ
¸¸¾à connect ¸í·ÉÀ» »ç¿ëÇÒ¶§ µ¥ÀÌŸº£À̽º¸¦ ¼±ÅÃÇÏÁö¾Ê¾Ò°Å³ª ÀÌÀü¿¡ connect ¸í·ÉÀ¸·Î ¾òÀº µ¥ÀÌŸº£À̽º ÇÚµéÀ» »ç¿ëÇؼ ´Ù¸¥ µ¥ÀÌŸº£À̽º¸¦ Á¢¼ÓÇÏ·Á¸é selectdb¸¦ »ç¿ëÇÑ´Ù.
µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·Ï°ú Å×À̺íÀÇ ¸ñ·Ï
@arr = $dbh->listdbs(); # dBÀÇ ¸ñ·ÏÀ» ¹è¿·Î ¸®ÅÏ. ¹Ýµå½Ã connect ¸í·ÉÀ»
# ¸ÕÀú ½ÇÇàÇØ¾ß ÇÑ´Ù.
@arr = $dbh->listtables; # dB¿¡ µî·ÏµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» ¸®ÅÏ.
# ¹Ýµå½Ã connect ¸í·É°ú selectdb ¸í·ÉÀ»
# ¸ÕÀú ¼öÇàÇØ¾ß ÇÑ´Ù.
À§ÀÇ µÎ ¸í·ÉÀº dB ¿£Áø¿¡ µî·ÏµÈ µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·Ï°ú µ¥ÀÌŸº£À̽º¿¡ µî·ÏµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» ¹è¿·Î ¸®ÅÏÇÑ´Ù.
¿¹1 - dB ¸ñ·Ï°ú Å×ÀÌºí ¸ñ·Ï °¡Á®¿À±â
´ÙÀ½Àº msqlperlÀÇ ¿¹·Î¼ Á¢¼ÓÇÑ È£½ºÆ®¿Í ¼±ÅÃµÈ µ¥ÀÌÅͺ£À̽º¸¦ Ãâ·ÂÇÏ°í, µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·Ï°ú ¼±ÅÃµÈ µ¥ÀÌÅͺ£À̽º¿¡ µî·ÏµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» Ãâ·ÂÇÏ´Â ¿¹ÀÌ´Ù.
±â´ÉÀûÀ¸·Î´Â ¸í·ÉÇà¿¡¼ »ç¿ëÇÏ´Â relshow¿Í À¯»çÇÑ ÇÁ·Î±×·¥À¸·Î º¸¸éµÈ´Ù.
1 : #!/usr/local/bin/perl
2 : use Msql;
3 :
4 : $dbh = Msql->connect;
5 : defined($dbh) || die 'µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù';
6 : $dbh->selectdb('commlab');
7 :
8 : $sock = $dbh->sock;
9 : $host = $dbh->host;
10 : $database = $dbh->database;
11 :
12 : @db = $dbh->listdbs();
13 : @tables = $dbh->listtables();
14 :
15 : print "Á¢¼ÓÇÑ È£½ºÆ®: $host\n";
16 : print "¼±ÅÃÇÑ µ¥ÀÌŸº£À̽º: $database\n";
17 : print "¼ÒÄÏ: $sock\n\n";
18 :
19 : print "´ÙÀ½Àº µî·ÏµÈ µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·ÏÀÔ´Ï´Ù.\n";
20 : print '+' . '-' x 38 . "+\n";
21 : for(0..$#db) {
22 : print '| ' . $db[$_] . ' ' x (40 - length($db[$_]) - 5) . "|\n";
23 : }
24 : print '+', '-' x 38, "+\n\n";
25 :
26 : print "´ÙÀ½Àº µî·ÏµÈ Å×À̺íÀÇ ¸ñ·ÏÀÔ´Ï´Ù.\n";
27 : print '+' . '-' x 38 . "+\n";
28 : for(0..$#tables) {
29 : print '| ' . $tables[$_] . ' ' x (40 - length($tables[$_]) - 5)
. "|\n";
30 : }
31 : print '+', '-' x 38, "+\n";
msqlperlÀ» »ç¿ëÇÏ¸é¼ ÁÖÀÇÇÒ °ÍÀº msqlperlÀ» ÀÌ¿ëÇؼ µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼Ó, ÁúÀÇÇϱâÀ§Çؼ´Â
#!/usr/local/bin/perl -w
use Msql;
$dbh = Msql->connect;
$dbh->selectdb('commlab');
¿Í °°Àº 4°³ÇàÀÌ ²À ÇÊ¿äÇÏ´Ù´Â °ÍÀÌ´Ù.
½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµé
´ÙÀ½ µÎ°³ÀÇ ¸Þ¼Òµå´Â ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀ» ¸®ÅÏÇÑ´Ù:
$sth = $dbh->listfields($table);
$sth = $dbh->query($sql_statement);
$sth¸¦ ÀÌ¿ëÇϸé API¿¡ÀÇÇØ Á¦°øµÇ´Â ¸ðµç ¸ÞŸµ¥ÀÌŸ¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.
$scalar = $sth->numrows;
$scalar = $sth->numfields;
@arr = $sth->table; # °¢ ÇʵåÀÇ µ¥ÀÌºí ¸í
@arr = $sth->name; # Çʵå¸í
@arr = $sth->type; # °¢ ÇʵåÀÇ Å¸ÀÔ, msql.h¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç,
# Msql::CHAR_TYPE, Msql::INT_TYPE,
# Msql::REAL_TYPE¸¦ ÅëÇØ Á¢±Ù°¡´ÉÇÏ´Ù.
@arr = $sth->isnotnull; # Not nullÀÎÁö¸¦ ÆÇÁ¤ÇÏ´Â ºÎ¿ï°ªÀÇ ¹è¿
@arr = $sth->isprikey; # Primary KeyÀÎÁö¸¦ ÆÇÁ¤ÇÏ´Â ºÎ¿ï°ªÀÇ ¹è¿
@arr = $sth->length; # ¹ÙÀÌÆ®·Î Ç¥ÇöµÈ °¢ ÇʵåÀÇ ±æÀ̸¦ °®´Â ¹è¿
¸¶Áö¸· 6°³ÀÇ ¸Þ¼Òµå´Â ¹è¿À» ¸®ÅÏÇÑ´Ù(perlref¿Í perlldsc¸¦ º¸±â¹Ù¶õ´Ù). ´ÜÁö ÇÑ ÇʵåÀÇ À̸§¸¸ ÇÊ¿äÇÑ °æ¿ì ´ÙÀ½°ú °°Àº ½ºÄ®¶ó ÂüÁ¶¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
$name_of_third_column = $sth->name->[2]
´Â
@all_column_names = $sth->name;
$name_of_third_column = $all_column_names[2];
¿Í µ¿ÀÏÇÑ ¹®ÀåÀÌ´Ù.
¿¹2 - Å×ÀÌºí ½ºÅ°¸¶ Ãâ·ÂÇϱâ
1 : #!/usr/local/bin/perl
2 : @var_type = ('¸ð¸§', 'Á¤¼öÇü', '¹®ÀÚÇü', '½Ç¼öÇü', 'Ident', '³Î',
'ÅؽºÆ®', '³¯ÀÚ', 'ÈÆó', '½Ã°£');
3 :
4 : use Msql;
5 : $dbh = Msql->connect;
6 : defined($dbh) || die 'µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù';
7 : $dbh->selectdb('commlab');
8 :
9 : @tables = $dbh->listtables();
10 :
11 : foreach(@tables) {
12 : $sth = $dbh->listfields($_);
13 :
14 : unless(defined($sth)) {
15 : print $dbh->errmsg(), "\n";
16 : }
17 :
18 : @fields = $sth->name;
19 : @types = $sth->type;
20 : @notnull = $sth->isnotnull;
21 : @length = $sth->length;
22 :
23 : print "Å×À̺í À̸§: $_\n";
24 : for(0..$#fields) {
25 : print "Çʵå¸í: $fields[$_]\n";
26 : print "ÇʵåÇü: $var_type[$types[$_]]\n" if($types[$_] <= 10);
27 : print "ÇʵåÇü: ½Ã½ºÅÛ\n" if($types[$_] > 10);
28 : print "ÇÊ¿äÇʵå: $notnull[$_]\n";
29 : print "±æÀÌ: $length[$_]\n\n";
30 : }
31 : }
SQLÁúÀÇ¿Í µ¥ÀÌÅÍ °¡Á®¿À±â
$sth = $dbh->listfields($table); # Ç¥ÀÇ ½ºÅ°¸¶¿¡´ëÇÑ ÇÚµéÀ» ¸®ÅÏ
$sth = $dbh->query($sql_statement); # ÁúÀÇ °á°ú¿¡´ëÇÑ ÇÚµéÀ» ¸®ÅÏ
ÀÌµé µÎ ¸í·ÉÀº mSQL ¼³¸í¼¿¡¼ ¼³¸íÇÏ°í ÀÖ´Â °Í°ú À¯»çÇÏ°Ô µ¿ÀÛÇÑ´Ù. À̵éÀº msql ¼¹ö°¡ »ç¿ëÀÚ¿¡°Ô Àü´ÞÇÏ´Â °ÍÀÌ ¹«¾ùÀÎÁö ¾Ë ¼öÀÖµµ·Ï ÇÏ´Â ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀ» ¸®ÅÏÇÑ´Ù. ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì, ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀº Á¤ÀǵÇÁö ¾Ê´Â´Ù. µû¶ó¼ ÁúÀǸ¦ ¼öÇàÇÑ ÈÄ¿¡´Â ¿À·ùÀÇ ¿øÀÎÀ» ¾Ë¾Æº¸±âÀ§ÇØ ´ÙÀ½°ú °°Àº Äڵ带 »ç¿ëÇØ¾ß ÇÑ´Ù.
unless(defined($sth)) {
$msg = $dbh->errmsg;
die "$msg";
}
listfields¿¡ÀÇÇØ ¸®ÅÏµÈ °ªÀ¸·Î Å×À̺íÀÇ Å©±â´Â ¾Ë ¼ö ¾ø´Ù. µû¶ó¼ ÀÌ ½ºÅ×ÀÌÆ®¸ÕÆ® Çڵ鿡´ëÇÑ numrow()´Â "N/A"¶ó´Â ¹®ÀÚ¿À» ¸®ÅÏÇÏ°Ô µÈ´Ù.
@arr = $sth->fetchrow; # Å×ÀÌºí¿¡¼ ´ÙÀ½ ÇàÀÇ µ¥ÀÌŸ °ªÀ» ¹è¿·Î ¸®ÅÏ
¼¹ö·Î ºÎÅÍ ´ÙÀ½ ÇàÀÇ µ¥ÀÌŸ °ªÀÇ ¹è¿À» ¸®ÅÏÇÑ´Ù. À¯»çÇÏ°Ô
%hash = $sth->fetchhash; # Å×ÀÌºí¿¡¼ ´ÙÀ½ ÇàÀÇ µ¥ÀÌŸ °ªÀ» ¿¬°ü¹è¿·Î ¸®ÅÏ
´Â ¿¬°ü¹è¿À» ¸®ÅÏÇÑ´Ù. Çؽ¬¿¡¼ Å°´Â Å×À̺íÀÇ Çʵå¸íÀÌ°í, °ªÀº ÇʵåÀÇ °ªÀÌ´Ù. Å×ÀÌºí¿¡ µ¿ÀÏÇÑ Çʵå¸íÀ» °®´Â Çʵ尡 ÀÖ´Â °æ¿ì µÑ Áß ÇÑ Çʵ带 »èÁ¦Çؾ߸¸ ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö ¾ÊÀ¸¸é fetchrow¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
$sth->dataseek($row_number); # °¡Á®¿Ã µ¥ÀÌŸÀÇ 옾¼ÂÀ» º¯°æ
½ºÅ×ÀÌÆ®¸ÕÆ® Çڵ鿡 ¿¬°üµÈ µ¥ÀÌŸÀÇ 옾¼ÂÀ» ÁöÁ¤ÇÑ´Ù. ´ÙÀ½¹ø fetchrow´Â dataseek¿¡ÀÇÇØ ÁöÁ¤µÈ Çà(ùÇàÀº 0)À» ¸®ÅÏÇÒ °ÍÀÌ´Ù.
ÇѹøÀÇ Query ¼öÇàÀ¸·Î Àüü Å×À̺í Ç¥½ÃÇϱâ
½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµéÀÇ Àüü ³»¿ëÀ» º¸´Â ¼Õ½¬¿î ¹æ¹ýÀº as_string ¸Þ¼ÒµåÀÌ´Ù. ÀÌ ÀÛ¾÷Àº ´ÙÀ½ÀÇ ¸î¸î ¿¹¿Ü»çÇ×À» Á¦¿ÜÇÏ°í´Â msql ¸ð´ÏÅÍ¿Í À¯»çÇÏ´Ù.
- Çʵå ÆøÀº ÇØ´ç Çʵ峻 Àüü ¿£Æ®¸®¸¦ Á¶»çÇÔÀ¸·Î¼ °è»êµÈ´Ù.
- Á¦¾î¹®ÀÚ´Â ¿ª½½¸®½¬µÈ 8Áø¼ö·Î »ç»óµÈ´Ù.
- ¿ª½½·¡½¬´Â µÎ¹ø »ç¿ëÇÑ´Ù(\´ë½Å \\)
- ¼öÄ¡ °ªÀº ¿Ã¹Ù¸£°Ô Á¶Á¤µÈ´Ù(Á¤¼ö¿Í ½Ç¼ö µÑ´Ù)
ÀÌ·¯ÇÑ Â÷ÀÌ´Â ´ÙÀ½ Ç¥¿¡ÀÇÇØ ¿¹½ÃÇÒ ¼ö ÀÖ´Ù:
msql·ÎÀÇ ÀÔ·Â(½ÇÁ¦ ÁٹٲÞÀº ¿©±â¼´Â ^MÀ¸·Î ´ëÄ¡µÇ¾ú´Ù.)
CREATE TABLE demo (
first_field CHAR(10),
second_field INT
) \g
INSERT INTO demo
VALUES ('new line',2)\g
INSERT INTO demo
VALUES ('back\slash',1)\g
INSERT INTO demo
VALUES ('cr^Mcrnl nl',3)\g
msqlÀÇ Ãâ·Â
ù¹ø° Çʵå |
µÎ¹ø° Çʵå |
new line
| 2
|
back\slash
| 1
|
crnlr nl
| 3
|
pmsqlÀÇ Ãâ·Â
ù¹ø° Çʵå |
µÎ¹ø° Çʵå |
new\012line
| 2
|
back\\slash
| 1
|
cr\015crnl\012nl
| 3
|
¿¹3 - °Ë»ö
´ÙÀ½Àº ƯÁ¤ µ¥ÀÌÅͺ£À̽ºÀÇ Æ¯Á¤ Å×À̺í·ÎºÎÅÍ DigitalÀ̶ó´Â ´Ü¾î¸¦ Æ÷ÇÔÇÑ ÇàÀ» °Ë»öÇÏ´Â ¿¹ÀÌ´Ù. Áß°£ÀÚ °Ë»öÀ» ÇϱâÀ§ÇØ like¸¦ »ç¿ëÇßÀ¸¸ç, ¸ð´ÏÅÍ ÇÁ·Î±×·¥ÀÎ msqlÀÇ Ãâ·Â°ú µ¿ÀÏÇÑ °á°ú¸¦ ¾ò±âÀ§ÇØ as_string ¸Þ¼Òµå¸¦ »ç¿ëÇß´Ù.
1 : #!/usr/local/bin/perl
2 :
3 : use Msql;
4 : $dbh = Msql->connect;
5 : defined($dbh) || die 'µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù';
6 : $dbh->selectdb('commlab');
7 :
8 : $sth = $dbh->query("select * from testbook where pub like '%Digital%'");
9 : unless(defined($sth)) {
10 : $msg = $dbh->errmsg;
11 : die "$msg";
12 : }
13 : $string = $sth->as_string;
14 : print $string;
ÇÚµéÀÇ Á¾·á
µ¥ÀÌŸº£À̽º³ª ½ºÅÂÀÌÆ®¸ÕÆ® ÇÚµéÀ» °®´Â ½ºÄ®¶ó º¯¼ö°¡ °ªÀ» °®Áö ¾ÊÀ» ¶§ MsqlÀº Àû´çÇÑ µ¿ÀÛ(°á°ú¸¦ »èÁ¦(free)Çϰųª µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» Á¾·áÇÑ´Ù)À» ÃëÇÑ´Ù. µû¶ó¼ °á°ú¸¦ »èÁ¦(free)Çϰųª Á¢¼ÓÀ» ´Ý°í½ÍÀ¸¸é ´ÙÀ½ Áß Çϳª¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
- ÇÚµéÀÇ Á¤ÀǸ¦ »èÁ¦
- ´Ù¸¥ ¸ñÀûÀ¸·Î ÇÚµéÀ» »ç¿ë
- ÇÚµéÀÌ ¿µ¿ªÀ» ¹þ¾î³ª·Ï ¼³Á¤
- ÇÁ·Î±×·¥À» Á¾·á
¿À·ù¸Þ½ÃÁö
Msql Å©·¡½º¿¡¼ ¿À·ù¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â ¾ÈÁ¤ÀûÀÎ ¹æ¹ýÀº errmsg()·Î¼ ÀÌ°ÍÀº C API¿¡¼ Á¦°øÇÏ°íÀÖ´Â msqlErrMsg º¯¼öÀÇ ÇöÀç°ªÀ» ¸®ÅÏÇÑ´Ù. ¶ÇÇÑ Àü¿ªº¯¼ö·Î $Msql::db_errstr°¡ ÀÖÀ¸¸ç, ÀÌ º¯¼ö´Â Ç×»ó ¸¶Áö¸· ¿À·ù¸Þ½ÃÁö¸¦ °®´Â´Ù. errmsg()°¡ ´ÙÀ½¿¡ ¼öÇàµÉ ¸Þ½ÃÁö·Î ÃʱâȵǴ ¹Ý¸é $Msql::db_errstr´Â ±×·¸Áö ¾Ê´Ù.
-w ½ºÀ§Ä¡
Msql¸¦ »ç¿ëÇÒ¶§ ÆÞÀÇ -w ½ºÀ§Ä¡´Â µð¹ö±ëÀ» Çϴµ¥ ¸¹Àº µµ¿òÀÌ µÈ´Ù. ¸¸¾à ÆÞ ÇÁ·Î±×·¥À» -w ½ºÀ§Ä¡·Î È£ÃâÇÑ´Ù¸é, errmsg()·Î ºÎÅÍ °æ°í¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ °ÍÀº ÇÁ·Î±×·¥³»¿¡¼ ¿À·ù¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾Ê°íµµ msql ¼¹ö·ÎºÎÅÍ ¿À·ù¸Þ½ÃÁö¸¦ ¾ò´Â ¼Õ½¬¿î ¹æ¹ýÀÌ´Ù.
¹«¾ùÀÌ ¾î¶»°Ô ÁøÇàµÇ´ÂÁö ÀÚ¼¼È÷ ¾Ë°íÀÚ ÇÏ´Â °æ¿ì, DavidÀÇ ¼³¸í¼¿¡Àִ ȯ°æº¯¼ö¸¦ ¼³Á¤ÇÏ¸é µÈ´Ù. DavidÀÇ µð¹ö±ëÀ» À§ÇÑ Á¶¾ðÀº ¾ÆÁÖ ¶Ù¾î³ °ÍÀ¸·Î µ¡ºÙÀÏ °ÍÀÌ ¾ø´Ù.
-w ½ºÀ§Ä¡¸¦ »ç¿ëÇÏ¸é¼ msql ¼¹ö·ÎºÎÅÍÀÇ ¿À·ù¸Þ½ÃÁö¸¦ º¸°í½ÍÁö ¾Ê´Ù¸é $Msql::QUIET¶ó´Â º¯¼ö¿¡ Âü°ªÀ» ÇÒ´çÇÏ¸é µÈ´Ù.
NULL Çʵå
Å×ÀÌºí ³»ÀÇ NULL Çʵå´Â Á¤ÀǵÇÁö ¾ÊÀº °ªÀ» ÆÞ¿¡ ¸®ÅÏÇÑ´Ù.
mSQL 2.0¿¡¼ »õ·Î¿î Á¡
API¿¡¼ query()ÇÔ¼ö´Â query¿¡ÀÇÇØ ¿µÇâÀ» ¹ÌÄ¡´Â ÇàÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ¸®ÅÏ Äڵ尡 0º¸´Ù Å« °ªÀ̶ó¸é, ÀÌ°ÍÀº query°¡ Á¤»óÀûÀ¸·Î ¼öÇàµÈ °ÍÀ» ÀǹÌÇϸç query¿¡ÀÇÇØ ¿µÇâÀ» ¹ÞÀº ÇàÀÇ ¼ö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.(Áï, SELECT¿¡ÀÇÇØ ¸®ÅÏµÈ ÇàÀÇ ¼ö, UPDATE¿¡ÀÇÇØ º¯°æµÈ ÇàÀÇ ¼ö, DELETE¿¡ÀÇÇØ »èÁ¦µÈ ÇàÀÇ ¼ö).
Å×ÀÌºí¿¡ ¿¬°üµÈ ¸ðµç À妽º¸¦ ã±âÀ§ÇØ ½ºÅ×ÀÌÆ®¸ÕÆ® Çڵ鿡´ëÇÑ listindices() ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. À妽º¿¡ »ç¿ëµÈ Çʵ带 ã±âÀ§ÇØ µ¥ÀÌŸº£À̽º Çڵ鿡´ëÇÑ listindex($table,$index) ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
INT_TYPE, CHAR_TYPE, REAL_TYPE¿Ü¿¡ mSQL 2¿¡¼´Â ¸î¸î »õ·Î¿î Çʵå ÇüÀ» °¡Áö°í ÀÖÀ¸¸ç ÀÌ Çü¿¡´ëÇÑ Á¢±ÙÀº IDENT_TYPE, NULL_TYPE, TEXT_TYPE, DATE_TYPE, UINT_TYPE, MONEY_TYPE, TIME_TYPE, IDX_TYPE, SYSVAR_TYPEÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù. °¢°¢ÀÇ Çü¿¡´ëÇÑ °ªÀº ´ÙÀ½°ú °°´Ù.
INT_TYPE 1
CHAR_TYPE 2
REAL_TYPE 3
IDENT_TYPE 4
NULL_TYPE 5
TEXT_TYPE 6
DATE_TYPE 7
UINT_TYPE 8
MONEY_TYPE 9
TIME_TYPE 10
IDX_TYPE 253
SYSVAR_TYPE 254
´Ù¸¥ Æ÷Æ®·ÎÀÇ ¿¬°á
mSQL API´Â mSQLÀÌ ÄÄÆÄÀÏ µÉ¶§ ³»Á¤µÈ Æ÷Æ®°¡ ¾Æ´Ñ ´Ù¸¥ Æ÷Æ®·ÎÀÇ ¿¬°áÀ» Çã¿ëÇÑ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡À» »ç¿ëÇϱâÀ§ÇØ MSQL_TCP_PORT¶ó´Â ȯ°æº¯¼ö¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ´Â ÇÁ·Î±×·¥ ³»¿¡¼
$ENV{'MSQL_TCP_PORT'} = 1234; # ¶Ç´Â1112³ª 1113³ª 4333³ª 4334
¶ó´Â ¸í·ÉÀ» ÀÌ¿ëÇؼ ȯ°æº¯¼ö¸¦ ¼³Á¤ÇÒ ¼öÀÖ´Ù. ÀÌ ¸í·É¿¡ À̾îÁö´Â connect()´Â ÁöÁ¤µÈ Æ÷Æ®·Î ¼³Á¤µÈ´Ù.
·ÎÄà ¸Ó½ÅÀÇ UNIX ¼ÒÄÏÀ¸·Î connect()Çϱâ À§Çؼ´Â MSQL_UNIX_PORT¸¦ »ç¿ëÇÑ´Ù.
¹öÀü Á¤º¸
MsqlPerlÀÇ ¹öÀüÀº Ç×»ó ÆÞ Ç¥ÁØÀ¸·Î¼ $Msql::VERSION¿¡ ÀúÀåµÈ´Ù.
mSQL API´Â ¸î¸î ³»ºÎ ¼³Á¤ º¯¼ö¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ» ±¸ÇöÇß´Ù. ÀÌµé ¼³Á¤ ¸Å°³º¯¼ö´Â gethostinfo, getserverinfo°ú getprotoinfoÀÌ´Ù. ÀÌµé ¼¼°³ ¸ðµÎ Å©·¡½º ¸Þ¼Òµå·Î¼ µ¥ÀÌŸº£À̽º ÇÚµéÀ» ÅëÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¾î¶² ȯ°æÇÏ¿¡¼´Â µ¥ÀÌŸº£À̽º ÇÚµé°ú ¹«°üÇÒ ¼öµµ ÀÖ´Ù. ÀÌµé ¼¼°³´Â ÇöÀç ÇÁ·Î±×·¥³»¿¡¼ ¸¶Áö¸· connect()¸í·ÉÀ» ¹Ý¿µÇÏ´Â Àü¿ªº¯¼ö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº connect()¸¦ È£ÃâÇϱâ Àü¿¡´Â ºó ¹®ÀÚ¿À̳ª "0"À» ¸®ÅÏÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
µ¥ÀÌŸº£À̽º °ü¸®
°ü¸®ÀÚÀÇ shutdown, createdb, dropdb, reloadaclsÀº µ¥ÀÌŸº£À̽º ÇÚµéÀ» ÅëÇØ ¸ðµÎ Á¢±Ù °¡´ÉÇϸç, msqladminÀ¸·ÎÇÏ´Â °Í°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ±¸ÇöµÇ¾ú´Ù.
mSQL ¿£ÁøÀº ÀÌ·¯ÇÑ ¸í·ÉµéÀÌ µ¥ÀÌŸº£À̽º °ü¸®ÀÚ°¡ ¾Æ´Ñ ´Ù¸¥ »ç¿ëÀÚ¿¡ÀÇÇØ È£ÃâµÇ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù. µû¶ó¼ À̵éÁß Çϳª¸¦ »ç¿ëÇÒ¶§¿¡´Â È®½ÇÇÏ°Ô ¸®ÅÏ°ú ¿À·ùÄڵ带 °Ë»çÇØ¾ß ÇÑ´Ù.
StudlyCaps
ÆÞ ÇÁ·Î±×·¡¸Ó´Â º¸Åë ListTables¸¦ ÀÔ·ÂÇϱ⠺¸´Ù´Â list_tables³ª listtables·Î ÀÔ·ÂÇϱ⸦ ÁÁ¾ÆÇÑ´Ù. mSQL API´Â ¾îµð¿¡¼µç StudlyCaps¸¦ »ç¿ëÇϸç, MsqlPerlÀÇ ÀÌÀü ¹öÀüµµ ¸¶Âù°¡Áö ÀÌ´Ù. $VERSION 1.06¿¡¼ ºÎÅÍ ¸ðµç ¸Þ¼Òµå´Â ³»ºÎÀûÀ¸·Î ¼Ò¹®ÀÚ ÀÌÁö¸¸ ¿øÇÏ´Â ´ë·Î ¾µ ¼öÀÖ´Ù. ´ë¼Ò¹®ÀÚ´Â ¹«½ÃµÇ¸ç, °¡µ¶¼ºÀ» °³¼±ÇϱâÀ§ÇØ ¹ØÁÙÀ» »ç¿ëÇß´Ù.
¼·Î´Ù¸¥ ¸Þ¼Òµå ¸íÀ» »ç¿ëÇÏ´Â ´ë°¡´Â ¹«½ÃÇÒ¸¸ÇÏ´Ù. ¾Ë·ÁÁø À̸§À¸·Î º¯È¯µÉ ¼ö ÀÖ´Â ÀÓÀÇÀÇ ¸Þ¼Òµå ¸íÀº ÀÏ´Ü ÇÁ·Î±×·¥ ³»¿¡¼ Á¤Àǵǰí, ÀÌ ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ¶§±îÁö º°¸íÀ» À¯ÁöÇÒ °ÍÀÌ´Ù. ÀÚÀ¯·Ó°Ô fetch_row³ª connenT ¶Ç´Â ÀÌÀü ÇÁ·Î±×·¥Ã³·³ ListDBs·Î »ç¿ëÇصµ µÈ´Ù. ¹°·Ð ÀÌ·¯ÇÑ °ÍµéÀº °è¼Ó µ¿ÀÛÇÑ´Ù.