2011-03-30 37 views
0

我正在使用perl dbi連接來遠程提取數據。我正在尋找壓縮數據,如果可能的話。 有沒有一種方法可以通過perl執行文件壓縮,並使用mysql的MySQL?如何使用perl dbi與mysql壓縮數據

這裏是我得到的數據片段:

 my $sth = $dbh->prepare("SELECT UUID(), '$node', 1, 2, 3, 4, vts FROM $tblist"); 
    $sth->execute(); 
    while (my($uid, $hostnm,$1,$2,$3,$upd,$vts) = $sth->fetchrow_array()) { 
     print $gzip_fh "rec^A$uid^Ehost^A$hostnm^E1^A$1^E2^A$2^E3^A$3^E4^A$upd^Evts^A$vts^D"; 
    } 
    $sth->finish; 

回答

2

最好的選擇將是使用prepared statements;有了這個,一旦你編譯了語句,只要你每次需要運行查詢時都必須通過線路發送參數。

這裏的例子顯示瞭如何執行一個簡單的準備,如果你要反覆使用同一個查詢,你應該保留你的$sth,你可以繼續使用新變量調用$sth->execute()。減少網絡遍歷的原因是因爲每次運行$sth->execute($var)時都沒有發送查詢,而只是傳遞準備好的語句的ID和進入?佔位符的變量。

$sth = $dbh->prepare("select * from table where column=?"); 
$sth->execute($var); 
+0

我現在正在使用prepare語句。我認爲接下來要做的就是測試一下,看看它通過電線的速度有多快。 – jdamae 2011-03-30 01:39:43

+0

@jdamae:只要確保在執行preparedStatements時保存preparedStatements;我已經看到許多實例,人們將從preparedStatement執行查詢,然後將其扔掉。只是對我見過的東西進行一般觀察。 – Suroot 2011-03-30 01:42:22

+0

@ Suroot-感謝您的輸入。我不是Perl專家。你能詳細說明一下嗎?我會發布我的代碼。謝謝。 – jdamae 2011-03-30 02:04:44