2013-10-29 68 views
0

我使用Perl將csv文件插入到MySQL中。 我已經成功地將一些數據插入到MySQL中。 但是,csv文件中的某些字段爲空,且代碼無法繼續運行。如何避免使用Perl插入一個非空字段從csv到mysql?

什麼是正確的方式來表達if語句來檢查$rttjitter是否爲空,否則打印該行號,然後執行?

即2條件:$rtt不等於0且$rttjitter不爲零。

my $empty = q{}; 

my @nulls =(); 

if ($rtt !=0 && $rttjitter ne undef) 

^ 這些工作不太好。

回答

1

您可以使用內置的defined功能明確檢查變量定義,所以如

if(defined($rttjitter) and $rttjitter) { ... 

將檢查它是否已定義,並且其值不是0或空字符串。

這很可能雖然你應該再看看如何你在你的CSV(你使用一個模塊一樣Text::CSV,對吧?)讀書,和/或你是如何做的DB插入,如通常這類事情的undef值將乾淨地插入到數據庫中,並且不應該對代碼造成任何問題,除非你正在做一些奇怪的事情。

+0

它說「全局符號$ DBNAME」需要顯式包名稱,並且在使用「使用Text :: CSV」時出現編譯錯誤 –

+0

我現在可以使用 if(defined($ rttjitter)&& $ rttjitter && $ rtt != 0) –

0
if (defined($rttjitter) && defined($rtt) && $rtt != 0) 
{ 
    ... # $rttjitter is not null (undef) and $rtt is not null (undef) and nonzero 
} 
else 
{ 
    ... # at least one column fails the test 
} 
+0

DBD :: mysql :: st執行失敗:第1行的列'rttjitter'的數據被截斷.............. 一旦找到空字段就停止插入... –

相關問題