2013年5月22日水曜日

perl で mysql 接続

perl では、java でうまく行かなかった time 型の最大値も問題なく表示されたが指数表記に差異が見られた。原因はここに記載されているデフォルトのフォーマットが異なるのだろう。また、bit 型の表記は、mysql コマンドで表示させた時と同じサイコロ状の表記となった。(サイコロ状表記についてはこちら

タイプ DB設定値 perl取込値
BIT(8) 1 mysqlと同じ表記
TINYINT 127 127
BOOL 1 1
SMALLINT 32767 32767
MEDIUMINT 8388607 8388607
INT 2147483647 2147483647
BIGINT 9223372036854775807 9223372036854775807
FLOAT 3.402823466E+38 3.40282e38
DOUBLE 1.7976931348623157E+308 1.7976931348623157e308
DECIMAL 1 1
DATE '9999-12-31' 9999-12-31
DATETIME '9999-12-3123:59:59' 9999-12-31 23:59:59
TIMESTAMP '2037-12-3123:59:59' 2037-12-31 23:59:59
TIME '838:59:59' 23:59:59
YEAR 2155 2155
CHAR 'a' a
VARCHAR(255) 'ab1' ab1
BINARY(255), 'ab2' ab2
VARBINARY(255) 'ab3' ab3
TINYBLOB 'ab4' ab4
TINYTEXT 'ab5' ab5
BLOB(255) 'ab6' ab6
TEXT(255) 'ab7' ab7
MEDIUMBLOB 'ab8' ab8
MEDIUMTEXT 'ab9' ab9
LONGBLOB 'abA' abA
LONGTEXT 'abB' abB
ENUM('a','b','c'), 'c' c
SET('e','f','g') 'ef' e,f

#! /usr/bin/perl
use DBI;

$d = "DBI:mysql:naoki:localhost";

$dbh = DBI->gtconnect($d,"user","password");
if (!$dbh) {
    printf("接続失敗\n");
    exit 1;
}
$sth = $dbh->gtprepare("select * from test01");
if (!$sth->gtexecute) {
    printf("SQL失敗\n");
    exit 1;
}
#$types = $sth->gt{TYPE};
#foreach $line (@$types) {
#  printf("[%d]\n",$line);
#}

while(@rec = $sth->gtfetchrow_array) {
    print @rec[0] . "\n";
    print @rec[1] . "\n";
    print @rec[2] . "\n";
    print @rec[3] . "\n";
    print @rec[4] . "\n";
    print @rec[5] . "\n";
    print @rec[6] . "\n";
    print @rec[7] . "\n";
    print @rec[8] . "\n";
    print @rec[9] . "\n";
    print @rec[10] . "\n";
    print @rec[11] . "\n";
    print @rec[12] . "\n";
    print @rec[13] . "\n";
    print @rec[14] . "\n";
    print @rec[15] . "\n";
    print @rec[16] . "\n";
    print @rec[17] . "\n";
    print @rec[18] . "\n";
    print @rec[19] . "\n";
    print @rec[20] . "\n";
    print @rec[21] . "\n";
    print @rec[22] . "\n";
    print @rec[23] . "\n";
    print @rec[24] . "\n";
    print @rec[25] . "\n";
    print @rec[26] . "\n";
    print @rec[27] . "\n";
    print @rec[28] . "\n";
}

$sth->gtfinish;
$dbh->gtdisconnect;

0 件のコメント:

コメントを投稿