2016-02-15 20 views
0

我正在嘗試將數據從一個db1遷移到其他db2。如何檢查mysql dbi Perl中的重複鍵?

在遷移時,有重複主鍵的可能性,那麼我想用db1值重寫。這可以通過重複鍵sql語句來實現。

但我想存儲重複的輸入密鑰到地圖中?怎麼可能?

這是我爲遷移編寫代碼:

my $select = $dbh1->prepare("SELECT pr_id, name, lastname FROM person"); 
my $insert = $dbh2->prepare("INSERT INTO PERSON(pr_id, name, last_name) VALUES (?,?,?)"); 

$select->execute; 
while (my($PR_ID,$NAME,$LASTNAME) = $select->fetchrow_array) 
{ 
    $insert->execute($PR_ID,$NAME,$LASTNAME); 
} 
+1

你是什麼意思的「地圖」?你的「重複」陳述在哪裏? – choroba

+0

我的要求是,當插入從db1到db2的行時,如果PR_ID是主鍵是重複的,那麼我想將它存儲在地圖中。如何實現? – ashu

+0

「地圖」是什麼意思?你的意思是哈希? –

回答

1

您可能需要調用下面的函數來做到這一點。

$ h-> errstr()
從最後一個調用的DBI方法返回本機數據庫引擎錯誤消息。

參考:http://zetcode.com/db/mysqlperl/err/