فهرست منبع

处理 PDOException

visuddhinanda 4 سال پیش
والد
کامیت
24ae3cc3b3

+ 2 - 2
app/install/db_insert_wordindex_from_csv_cli.php

@@ -21,9 +21,9 @@ $dbh_word_index = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PE
 $dbh_word_index->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
 #删除
-$query = "DELETE FROM "._TABLE_." WHERE true";
-$stmt = $dbh_word_index->prepare($query);
 try{
+	$query = "DELETE FROM "._TABLE_;
+	$stmt = $dbh_word_index->prepare($query);
 	$stmt->execute();
 }catch(PDOException $e){
 	fwrite(STDERR,$e->getMessage());

+ 44 - 29
deploy/migaration/20211125155600_word_statistics.php

@@ -6,57 +6,70 @@ define("_PG_TABLE_WORD_STATISTICS_", "word_statistics");
 
 #打开源数据库
 $PDO_SRC = new PDO(_SRC_DB_STATISTICS_,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open src".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO(_PG_DB_STATISTICS_,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
-echo "open dest".PHP_EOL;
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+fwrite(STDOUT,"open dest ok".PHP_EOL) ;
 
 #删除目标数据库中所有数据
-$query = "DELETE FROM "._PG_TABLE_WORD_STATISTICS_." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+
+try{
+	$query = "DELETE FROM "._PG_TABLE_WORD_STATISTICS_;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
-$stmt->execute();
-echo "delete dest".PHP_EOL;
 
 // 开始一个事务,关闭自动提交
 $count = 0;
-echo "begin Transaction".PHP_EOL;
+fwrite(STDOUT,"begin Transaction".PHP_EOL);
 
 $PDO_DEST->beginTransaction();
 
 $query = "INSERT INTO "._PG_TABLE_WORD_STATISTICS_." ( bookid , word , count , base , end1 , end2 , type , length ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? )";
-$stmtDEST = $PDO_DEST->prepare($query);
-
+try{
+	$stmtDEST = $PDO_DEST->prepare($query);
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 #从源数据库中读取
 $query = "SELECT *  FROM "._SRC_TABLE_WORD_STATISTICS_." WHERE true ";
-$stmtSrc = $PDO_SRC->prepare($query);
-$stmtSrc->execute();
 
+try{
+	$stmtSrc = $PDO_SRC->prepare($query);
+	$stmtSrc->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 	#插入目标表
-    $stmtDEST->execute(array(
-					$srcData["bookid"],
-					$srcData["word"],
-					(int)$srcData["count"],
-					$srcData["base"],
-					$srcData["end1"],
-					$srcData["end2"],
-					(int)$srcData["type"],
-					(int)$srcData["length"]
-				));
-	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
-		$error = $PDO_DEST->errorInfo();
-		echo "error - $error[2] ";
+		$data = array(
+						$srcData["bookid"],
+						$srcData["word"],
+						(int)$srcData["count"],
+						$srcData["base"],
+						$srcData["end1"],
+						$srcData["end2"],
+						(int)$srcData["type"],
+						(int)$srcData["length"]
+					);
+	try{					
+		$stmtDEST->execute($data);		
+	}catch(PDOException $e){
+		fwrite(STDERR,"error:".$e->getMessage().implode(',',$data));
 		exit;
-	}			
+	}
+
 	$count++;
 	if($count%10000==0){
 		echo "finished $count".PHP_EOL;
@@ -64,7 +77,9 @@ while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 }
 
 // 提交更改
+
 $PDO_DEST->commit();
+
 echo "done".PHP_EOL;
 
 

+ 31 - 20
deploy/migaration/20211125155700_pali_sent_org.php

@@ -13,25 +13,25 @@ $dest_table=_PG_TABLE_PALI_SENT_ORG_;#目标表名
 echo "migarate pali_sent_org".PHP_EOL;
 #打开源数据库
 $PDO_SRC = new PDO($src_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open src".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 // 开始一个事务,关闭自动提交
 $count = 0;
@@ -40,16 +40,26 @@ echo "begin Transaction".PHP_EOL;
 $PDO_DEST->beginTransaction();
 
 $query = "INSERT INTO ".$dest_table." (id, book , paragraph , word_begin , word_end , length , count , text , html,sim_sents ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? ,?)";
-$stmtDEST = $PDO_DEST->prepare($query);
+try{
+	$stmtDEST = $PDO_DEST->prepare($query);
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 #从源数据表中读取
-$query = "SELECT *  FROM ".$src_table." WHERE true ";
-$stmtSrc = $PDO_SRC->prepare($query);
-$stmtSrc->execute();
+$query = "SELECT *  FROM ".$src_table;
+try{
+	$stmtSrc = $PDO_SRC->prepare($query);
+	$stmtSrc->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 	#插入目标表
-    $stmtDEST->execute(array(
+	$data = array(
 					(int)$srcData["id"],
 					(int)$srcData["book"],
 					(int)$srcData["paragraph"],
@@ -60,12 +70,13 @@ while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 					$srcData["text"],
 					$srcData["html"],
 					$srcData["sim_sents"]
-				));
-	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
-		$error = $PDO_DEST->errorInfo();
-		echo "error - $error[2] ";
+				);
+	try{					
+		$stmtDEST->execute($data);		
+	}catch(PDOException $e){
+		fwrite(STDERR,"error:".$e->getMessage().implode(',',$data));
 		exit;
-	}			
+	}
 	$count++;
 	if($count%10000==0){
 		echo "finished $count".PHP_EOL;

+ 35 - 22
deploy/migaration/20211125165700-pali_sent-upgrade.php

@@ -1,11 +1,13 @@
 <?php
 require_once __DIR__."/../../app/config.php";
 
+
 define("_PG_DB_PALI_SENTENCE_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_PG_TABLE_PALI_SENT_", "pali_sentences");
+define("_PG_TABLE_PALI_SENT_ORG_", "pali_sent_orgs");
 
-$src_db=_FILE_DB_PALI_SENTENCE_;#源数据库
-$src_table=_TABLE_PALI_SENT_ORG_;#源表名
+$src_db=_PG_DB_PALI_SENTENCE_;#源数据库
+$src_table=_PG_TABLE_PALI_SENT_ORG_;#源表名
 
 $dest_db=_PG_DB_PALI_SENTENCE_;#目标数据库
 $dest_table=_PG_TABLE_PALI_SENT_;#目标表名
@@ -13,25 +15,26 @@ $dest_table=_PG_TABLE_PALI_SENT_;#目标表名
 echo "migarate pali_sent_org".PHP_EOL;
 #打开源数据库
 $PDO_SRC = new PDO($src_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open src".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
+
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 // 开始一个事务,关闭自动提交
 $count = 0;
@@ -40,12 +43,22 @@ echo "begin Transaction".PHP_EOL;
 $PDO_DEST->beginTransaction();
 
 $query = "INSERT INTO ".$dest_table." (id, book , paragraph , word_begin , word_end , length , count , text , html,sim_sents ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? ,?)";
-$stmtDEST = $PDO_DEST->prepare($query);
+try{
+	$stmtDEST = $PDO_DEST->prepare($query);
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 #从源数据表中读取
 $query = "SELECT *  FROM ".$src_table." WHERE true order by id asc";
-$stmtSrc = $PDO_SRC->prepare($query);
-$stmtSrc->execute();
+try{
+	$stmtSrc = $PDO_SRC->prepare($query);
+	$stmtSrc->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 $data = array();
 $currMergeCell = 1;
@@ -75,15 +88,15 @@ while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 		$data["count"] += $srcData["count"];
 		$currMergeCell--;
 		if($currMergeCell==1){
-			$stmtDEST->execute($currData);
+			try{					
+				$stmtDEST->execute($currData);		
+			}catch(PDOException $e){
+				fwrite(STDERR,"error:".$e->getMessage().implode(',',$currData));
+				exit;
+			}
 		}
 	}
-    
-	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
-		$error = $PDO_DEST->errorInfo();
-		echo "error - $error[2] ";
-		exit;
-	}			
+    		
 	$count++;
 	if($count%10000==0){
 		echo "finished $count".PHP_EOL;

+ 15 - 14
deploy/migaration/20211126220400-pali_sent_index-upgrade.php

@@ -12,29 +12,30 @@ echo "migarate pali_sent_index".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 #插入数据
-$query = "INSERT INTO ".$dest_table." (book, para, strlen ) SELECT book,paragraph,sum(length) FROM "._PG_TABLE_PALI_SENT_." where true group by book,paragraph;";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+$query = "INSERT INTO ".$dest_table." (book, para, strlen ) SELECT book,paragraph,sum(length) FROM "._PG_TABLE_PALI_SENT_." group by book,paragraph;";
+try{
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-$stmt->execute();
 echo "insert dest".PHP_EOL;
 
 echo "done".PHP_EOL;

+ 31 - 19
deploy/migaration/20211127214800_sent_sim.php

@@ -13,25 +13,25 @@ $dest_table=_PG_TABLE_SENT_SIM_;#目标表名
 echo "migarate sent_sim".PHP_EOL;
 #打开源数据库
 $PDO_SRC = new PDO($src_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open src".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 // 开始一个事务,关闭自动提交
 $count = 0;
@@ -40,25 +40,37 @@ echo "begin Transaction".PHP_EOL;
 $PDO_DEST->beginTransaction();
 
 $query = "INSERT INTO ".$dest_table." (sent1, sent2 , sim ) VALUES ( ? , ? , ? )";
-$stmtDEST = $PDO_DEST->prepare($query);
+try{
+	$stmtDEST = $PDO_DEST->prepare($query);
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 #从源数据表中读取
 $query = "SELECT *  FROM ".$src_table." WHERE true ";
-$stmtSrc = $PDO_SRC->prepare($query);
-$stmtSrc->execute();
+try{
+	$stmtSrc = $PDO_SRC->prepare($query);
+	$stmtSrc->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
 
 while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
 	#插入目标表
-    $stmtDEST->execute(array(
+	$data = array(
 					(int)$srcData["sent1"],
 					(int)$srcData["sent2"],
 					(int)$srcData["sim"]
-				));
-	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
-		$error = $PDO_DEST->errorInfo();
-		echo "error - $error[2] ";
+	);
+	try{					
+		$stmtDEST->execute($data);		
+	}catch(PDOException $e){
+		fwrite(STDERR,"error:".$e->getMessage().implode(',',$data));
 		exit;
-	}			
+	}
+		
 	$count++;
 	if($count%10000==0){
 		echo "finished $count".PHP_EOL;

+ 14 - 13
deploy/migaration/20211127214900-sent_sim_index.php

@@ -13,29 +13,30 @@ echo "migarate sent_sim_index".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table;
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 #插入数据
 $query = "INSERT INTO ".$dest_table." (sent_id, count ) SELECT sent1,count(*) FROM "._PG_TABLE_SENT_SIM_." group by sent1;";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+try{
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-$stmt->execute();
 echo "insert dest".PHP_EOL;
 
 echo "done".PHP_EOL;

+ 25 - 17
deploy/migaration/20211202084900_init_pali_serieses.php

@@ -22,20 +22,20 @@ echo "open src".PHP_EOL;
 
 #打开目标数据库
 $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
-$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+$PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "open dest".PHP_EOL;
 
 #删除目标表中所有数据
-$query = "DELETE FROM ".$dest_table." WHERE true";
-$stmt = $PDO_DEST->prepare($query);
-if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
-    $error = $PDO_DEST->errorInfo();
-    echo "error - $error[2] ";
+fwrite(STDOUT,"deleting date".PHP_EOL) ;
+try{
+	$query = "DELETE FROM ".$dest_table;
+	$stmt = $PDO_DEST->prepare($query);
+	$stmt->execute();
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
 	exit;
 }
-
-$stmt->execute();
-echo "delete dest".PHP_EOL;
+fwrite(STDOUT,"deleted date".PHP_EOL) ;
 
 // 开始一个事务,关闭自动提交
 $count = 0;
@@ -44,25 +44,33 @@ echo "begin Transaction".PHP_EOL;
 $PDO_DEST->beginTransaction();
 
 $query = "INSERT INTO ".$dest_table." (id, book , paragraph , title ) VALUES ( ? , ? , ? , ? )";
-$stmtDEST = $PDO_DEST->prepare($query);
+try{
+	$stmtDEST = $PDO_DEST->prepare($query);
+}catch(PDOException $e){
+	fwrite(STDERR,"error:".$e->getMessage());
+	exit;
+}
+
 
 #从源数据表中读取
 $row=0;
-
+$count = 0;
 while (($data = fgetcsv($fp, 0, ',')) !== false){
 	if($row>0){
 		#插入目标表
-		$stmtDEST->execute(array(
+		$date= array(
 			(int)$data[0],
 			(int)$data[1],
 			(int)$data[2],
 			$data[3],
-		));
-		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
-			$error = $PDO_DEST->errorInfo();
-			echo "error - $error[2] ";
+		);
+		try{					
+			$stmtDEST->execute($data);		
+		}catch(PDOException $e){
+			fwrite(STDERR,"error:".$e->getMessage().implode(',',$data));
 			exit;
 		}
+		$count++;
 	}	
 	$row++;
 }
@@ -70,7 +78,7 @@ fclose($fp);
 
 // 提交更改
 $PDO_DEST->commit();
-echo "done".PHP_EOL;
+echo "done $count row".PHP_EOL;