Bladeren bron

pali_sent 迁移到pg

visuddhinanda 4 jaren geleden
bovenliggende
commit
a9a72e0127

+ 3 - 3
app/db/pali_sent.php

@@ -5,7 +5,7 @@ require_once "../db/table.php";
 class PaliSentence extends Table
 {
     function __construct($redis=false) {
-		parent::__construct(_FILE_DB_PALI_SENTENCE_, "pali_sent", "", "",$redis);
+		parent::__construct(_FILE_DB_PALI_SENTENCE_, _TABLE_PALI_SENT_, "", "",$redis);
     }
 
 	public function getId($book,$para,$start,$end)
@@ -19,7 +19,7 @@ class PaliSentence extends Table
 				}
 			}
 			$id=0;
-			$query = "SELECT id from pali_sent where book = ? and paragraph = ? and begin=? and end=?";
+			$query = "SELECT id from ".$this->table." where book = ? and paragraph = ? and begin=? and end=?";
 			$stmt = $this->dbh->prepare($query);
 			$stmt->execute(array($book,$para,$start,$end));
 			$result = $stmt->fetch(PDO::FETCH_ASSOC);
@@ -36,7 +36,7 @@ class PaliSentence extends Table
 	}
 	public function getInfo($id)
 	{
-		$query = "SELECT book,paragraph, begin,end from pali_sent where id = ? ";
+		$query = "SELECT book,paragraph, word_begin as bebin ,word_end as end from ".$this->table." where id = ? ";
 		$stmt = $this->dbh->prepare($query);
 		$stmt->execute(array($id));
 		$result = $stmt->fetch(PDO::FETCH_ASSOC);

+ 1 - 1
app/install/db_insert_sentence.php

@@ -323,7 +323,7 @@ if (($fp = fopen($dirXmlBase . $dirXml . $outputFileNameHead . ".csv", "r")) !==
 
 PDO_Connect("$db_file");
 $PDO->beginTransaction();
-$query = "INSERT INTO pali_sent ('id','book','paragraph','begin','end','length','count','text','html','real','real_en') VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
+$query = "INSERT INTO "._TABLE_PALI_SENT_." (book , paragraph , begin , end , length , count , text , html , real , real_en ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
 $stmt = $PDO->prepare($query);
 foreach ($arrSent as $oneParam) {
     $stmt->execute($oneParam);

+ 3 - 3
app/pali_sent/get_sim.php

@@ -12,7 +12,7 @@ if (isset($_POST["sent_id"])) {
     $dns = _FILE_DB_PALI_SENTENCE_SIM_;
     $dbh_sim = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
     $dbh_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
-    $query = "SELECT sent2 FROM sent_sim WHERE  sent1 = ? limit 0 , 10";
+    $query = "SELECT sent2 FROM sent_sim WHERE  sent1 = ? limit 10";
     $stmt = $dbh_sim->prepare($query);
     $stmt->execute(array($_POST["sent_id"]));
     $simList = $stmt->fetchAll(PDO::FETCH_ASSOC);
@@ -24,10 +24,10 @@ if (isset($_POST["sent_id"])) {
 $output = array();
 
 $dns = _FILE_DB_PALI_SENTENCE_;
-$dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dbh = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-$query = "SELECT * FROM pali_sent WHERE  id = ? ";
+$query = "SELECT book,paragraph,word_begin as begin ,word_end as end,text ,html FROM "._TABLE_PALI_SENT_." WHERE  id = ? ";
 $stmt = $dbh->prepare($query);
 $count = 0;
 foreach ($simList as $value) {

+ 1 - 1
app/pali_sent/pali_sent.php

@@ -25,7 +25,7 @@ if (isset($_GET["id"])) {
 }
 
 global $PDO;
-PDO_Connect("" . _FILE_DB_PALI_SENTENCE_);
+PDO_Connect(_FILE_DB_PALI_SENTENCE_);
 
 if (isset($_GET["sent"])) {
     $_sent = mb_strtolower($_GET["sent"], 'UTF-8');

+ 3 - 3
app/pali_sent/pali_sent_list.php

@@ -11,11 +11,11 @@ $para = $_POST["para"];
 $paraList = json_decode($para);
 $output = array();
 
-$dns = "" . _FILE_DB_PALI_SENTENCE_;
-$dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_PALI_SENTENCE_;
+$dbh = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-$query = "SELECT begin,end ,text FROM pali_sent WHERE (book = ?  AND paragraph = ?  ) ";
+$query = "SELECT word_begin as begin,word_end as end ,text FROM "._TABLE_PALI_SENT_." WHERE (book = ?  AND paragraph = ?  ) ";
 $stmt = $dbh->prepare($query);
 foreach ($paraList as $key => $value) {
     # code...

+ 17 - 13
app/pali_sent/redis_upgrade_pali_sent.php

@@ -11,27 +11,31 @@ require_once "../redis/function.php";
 
 if (isset($argv[1])) {
     if ($argv[1] == "del") {
-        $redis = new redis();
-        $r_conn = $redis->connect('127.0.0.1', 6379);
-		$keys = $redis->keys('pali_sent_*');
-		$count=0;
-		foreach ($keys as $key => $value) {
-			# code...
-			$deleted = $redis->del($value);
-			$count += $deleted;
+        $redis = redis_connect();
+        if($redis){
+			$keys = $redis->keys('pali_sent_*');
+			$count=0;
+			foreach ($keys as $key => $value) {
+				# code...
+				$deleted = $redis->del($value);
+				$count += $deleted;
+			}
+			
+			echo "delete ok ".$count;			
+		}else{
+			echo "redis connect error ".PHP_EOL;			
+
 		}
-		
-		echo "delete ok ".$count;
     }
 } else {
 
-    $dbh = new PDO(_FILE_DB_PALI_SENTENCE_, "", "", array(PDO::ATTR_PERSISTENT => true));
+    $dbh = new PDO(_FILE_DB_PALI_SENTENCE_, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-	$db_pali_sent_sim = new PDO(_FILE_DB_PALI_SENTENCE_SIM_, "", "", array(PDO::ATTR_PERSISTENT => true));
+	$db_pali_sent_sim = new PDO(_FILE_DB_PALI_SENTENCE_SIM_, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 	$db_pali_sent_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-    $query = "SELECT id, book,paragraph, begin,end ,html FROM pali_sent WHERE 1 ";
+    $query = "SELECT id, book,paragraph, word_begin as begin ,word_end as end ,html FROM "._TABLE_PALI_SENT_." WHERE 1 ";
     $stmt = $dbh->prepare($query);
     $stmt->execute();
     $redis = redis_connect();

+ 1 - 1
app/reader/get_para.php

@@ -118,7 +118,7 @@ if ($FetchParInfo) {
 
     PDO_Connect(_FILE_DB_PALI_SENTENCE_);
 
-    $query = "SELECT book,paragraph,begin, end FROM "._TABLE_PALI_TEXT_." WHERE book= ? AND (paragraph BETWEEN ?AND ? ) ";
+    $query = "SELECT book,paragraph,word_begin as begin, word_end as end FROM "._TABLE_PALI_SENT_." WHERE book= ? AND (paragraph BETWEEN ?AND ? ) ";
     $sent_list = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));
     $output["sentences"] = $sent_list;
     echo json_encode($output, JSON_UNESCAPED_UNICODE);

+ 1 - 1
app/reader/get_para1.php

@@ -153,7 +153,7 @@ if ($FetchParInfo) {
 
     PDO_Connect(_FILE_DB_PALI_SENTENCE_);
 
-    $query = "SELECT book,paragraph,begin, end FROM pali_sent WHERE book= ? AND (paragraph BETWEEN ? AND ? ) ";
+    $query = "SELECT book,paragraph, word_begin as begin, word_end as end FROM "._TABLE_PALI_SENT_." WHERE book= ? AND (paragraph BETWEEN ? AND ? ) ";
     $sent_list = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));
 	$iCurrPara=0;
 	$output["sent_list"] = $sent_list;

+ 7 - 7
app/term/channal_list.php

@@ -28,12 +28,12 @@ if (isset($_POST["data"])) {
 $_userinfo = new UserInfo();
 $_channal = new Channal();
 
-$dns = "" . _FILE_DB_SENTENCE_;
-$db_trans_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_SENTENCE_;
+$db_trans_sent = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $db_trans_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-$dns = "" . _FILE_DB_PALI_SENTENCE_;
-$db_pali_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_PALI_SENTENCE_;
+$db_pali_sent = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $db_pali_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
 $channal = array();
@@ -44,7 +44,7 @@ $channel_power=array();
 if (isset($_COOKIE["userid"])) {
 	//找自己的
     PDO_Connect(_FILE_DB_CHANNAL_);
-    $query = "SELECT id from channal where owner = ? and status >0   limit 0,100";
+    $query = "SELECT id from channal where owner = ? and status >0   limit 100";
     $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
     foreach ($Fetch_my as $key => $value) {
         # code...
@@ -103,7 +103,7 @@ foreach ($_data as $key => $value) {
         $pali_letter["id"] = $arrInfo[0];
 
 		if($bookId<1000){
-			$query = "SELECT length FROM pali_sent WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  ";
+			$query = "SELECT length FROM "._TABLE_PALI_SENT_." WHERE book= ? AND paragraph= ? AND word_begin= ? AND word_end= ?  ";
 			$stmt = $db_pali_sent->prepare($query);
 			$stmt->execute(array($bookId, $para, $begin, $end));
 			$Fetch = $stmt->fetch(PDO::FETCH_ASSOC);
@@ -122,7 +122,7 @@ foreach ($_data as $key => $value) {
 
 
         #公开 或 channel有权限的
-        $query = "SELECT channal FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0 and (status = 30 {$channel_query} ) group by channal  limit 0 ,20 ";
+        $query = "SELECT channal FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0 and (status = 30 {$channel_query} ) group by channal  limit 20 ";
         $stmt = $db_trans_sent->prepare($query);
         $parm = array($bookId, $para, $begin, $end);
         $parm = array_merge_recursive($parm, $channal_list);

+ 10 - 10
app/term/note.php

@@ -44,16 +44,16 @@ if (isset($_POST["setting"])) {
     $_setting["channal"] = "";
 }
 
-$dns = "" . _FILE_DB_PALI_SENTENCE_;
-$db_pali_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_PALI_SENTENCE_;
+$db_pali_sent = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $db_pali_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-$dns = "" . _FILE_DB_PALI_SENTENCE_SIM_;
-$db_pali_sent_sim = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_PALI_SENTENCE_SIM_;
+$db_pali_sent_sim = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $db_pali_sent_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
-$dns = "" . _FILE_DB_SENTENCE_;
-$db_trans_sent = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+$dns = _FILE_DB_SENTENCE_;
+$db_trans_sent = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
 $db_trans_sent->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
 $output = array();
@@ -62,7 +62,7 @@ $output = array();
 $channal_list = array();
 if (isset($_COOKIE["userid"])) {
     PDO_Connect( _FILE_DB_CHANNAL_);
-    $query = "SELECT id from channal where owner = ?   limit 0,100";
+    $query = "SELECT id from channal where owner = ?   limit 100";
     $Fetch_my = PDO_FetchAll($query, array($_COOKIE["userid"]));
     foreach ($Fetch_my as $key => $value) {
         # code...
@@ -157,13 +157,13 @@ foreach ($_data as $key => $value) {
     try {
         if (empty($_setting["channal"])) {
             if ($sentChannal == "") {
-                $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0 and (status = 30 {$channel_query} )   order by modify_time DESC limit 0 ,1 ";
+                $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0 and (status = 30 {$channel_query} )   order by modify_time DESC limit 1 ";
                 $channal = "";
             } else {
-                $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0  AND channal = ?  limit 0 ,1 ";
+                $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0  AND channal = ?  limit 1 ";
             }
         } else {
-            $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0  AND channal = ?  limit 0 ,1 ";
+            $query = "SELECT * FROM sentence WHERE book= ? AND paragraph= ? AND begin= ? AND end= ?  AND strlen >0  AND channal = ?  limit 1 ";
             $channal = $_setting["channal"];
         }
 

+ 4 - 4
app/upgrade/upgrade_pali_toc.php

@@ -52,14 +52,14 @@ foreach ($result_lang as $lang) {
     # 第二步 生成para progress 1,2,15,zh-tw
 
     #查询该语言有多少段
-    $query = "select book,paragraph from sentence where strlen>0 and language= ? and book<1000 group by book,paragraph";
+    $query = "SELECT book,paragraph from sentence where strlen>0 and language= ? and book<1000 group by book,paragraph";
     $stmt = $dbh_sent->prepare($query);
     $stmt->execute(array($lang["language"]));
     $result_para = $stmt->fetchAll(PDO::FETCH_ASSOC);
     foreach ($result_para as $para) {
 
         # 查询每个段落的等效巴利语字符数
-        $query = "select begin from sentence where strlen>0 and language= ? and book = ? and paragraph = ? and begin<>'' group by begin,end";
+        $query = "SELECT begin from sentence where strlen>0 and language= ? and book = ? and paragraph = ? and begin<>'' group by begin,end";
         $stmt = $dbh_sent->prepare($query);
         $stmt->execute(array($lang["language"], $para["book"], $para["paragraph"]));
         $result_sent = $stmt->fetchAll(PDO::FETCH_ASSOC);
@@ -67,7 +67,7 @@ foreach ($result_lang as $lang) {
             echo "book:{$para["book"]} para: {$para["paragraph"]}\n";
             #查询这些句子的总共等效巴利语字符数
             $place_holders = implode(',', array_fill(0, count($result_sent), '?'));
-            $query = "select sum(length) as strlen from pali_sent where book = ? and paragraph = ? and begin in ($place_holders)";
+            $query = "SELECT sum(length) as strlen from "._TABLE_PALI_SENT_." where book = ? and paragraph = ? and begin in ($place_holders)";
             $sth = $dbh_pali_sent->prepare($query);
             $param = array();
             $param[] = $para["book"];
@@ -116,7 +116,7 @@ foreach ($valid_book as $key => $book) {
     $result_chapter = $stmt->fetchAll(PDO::FETCH_ASSOC);
     foreach ($result_chapter as $key => $chapter) {
         # 查询巴利字符数
-        $query = "SELECT sum(strlen) as pali_strlen from pali_sent_index where book = ? and para between ? and ? ";
+        $query = "SELECT sum(strlen) as pali_strlen from "._TABLE_PALI_SENT_INDEX_." where book = ? and para between ? and ? ";
         $stmt = $dbh_pali_sent->prepare($query);
         $stmt->execute(array($book["book"], $chapter["paragraph"], (int) $chapter["paragraph"] + (int) $chapter["chapter_len"] - 1));
         $result_chapter_strlen = $stmt->fetch(PDO::FETCH_ASSOC);

+ 0 - 0
deploy/migaration/word_statistics.php → deploy/migaration/20211125155600_word_statistics.php


+ 79 - 0
deploy/migaration/20211125155700_pali_sent_org.php

@@ -0,0 +1,79 @@
+<?php
+require_once "../../app/path.php";
+
+$src_db=_SRC_DB_PALI_SENTENCE_;#源数据库
+$src_table=_TABLE_PALI_SENT_;#源表名
+$dest_db=_FILE_DB_PALI_SENTENCE_;#目标数据库
+$dest_table=_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);
+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);
+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] ";
+	exit;
+}
+
+$stmt->execute();
+echo "delete dest".PHP_EOL;
+
+// 开始一个事务,关闭自动提交
+$count = 0;
+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);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	#插入目标表
+    $stmtDEST->execute(array(
+					(int)$srcData["id"],
+					(int)$srcData["book"],
+					(int)$srcData["paragraph"],
+					(int)$srcData["begin"],
+					(int)$srcData["end"],
+					(int)$srcData["length"],
+					(int)$srcData["count"],
+					$srcData["text"],
+					$srcData["html"],
+					$srcData["sim_sents"]
+				));
+	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;
+	}
+}
+
+// 提交更改
+$PDO_DEST->commit();
+echo "done".PHP_EOL;
+
+
+
+
+
+

+ 97 - 0
deploy/migaration/20211125165700-pali_sent-upgrade.php

@@ -0,0 +1,97 @@
+<?php
+require_once "../../app/path.php";
+
+$src_db=_FILE_DB_PALI_SENTENCE_;#源数据库
+$src_table=_TABLE_PALI_SENT_ORG_;#源表名
+$dest_db=_FILE_DB_PALI_SENTENCE_;#目标数据库
+$dest_table=_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);
+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);
+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] ";
+	exit;
+}
+
+$stmt->execute();
+echo "delete dest".PHP_EOL;
+
+// 开始一个事务,关闭自动提交
+$count = 0;
+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);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true order by id asc";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+
+$data = array();
+$currMergeCell = 1;
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	#插入目标表
+	$currData = array(
+					(int)$srcData["id"],
+					(int)$srcData["book"],
+					(int)$srcData["paragraph"],
+					(int)$srcData["word_begin"],
+					(int)$srcData["word_end"],
+					(int)$srcData["length"],
+					(int)$srcData["count"],
+					$srcData["text"],
+					$srcData["html"],
+					$srcData["sim_sents"]);
+	if($srcData["cell"]==1 ){
+		$stmtDEST->execute($currData);
+	}else if($srcData["cell"]>1){
+		$currMergeCell = (int)$srcData["cell"];
+		$data = $currData;
+	}else{
+		$data["word_end"] = $srcData["word_end"];
+		$data["text"] .= " ".$srcData["text"];
+		$data["html"] .= " ".$srcData["html"];
+		$data["lenght"] += $srcData["lenght"];
+		$data["count"] += $srcData["count"];
+		$currMergeCell--;
+		if($currMergeCell==1){
+			$stmtDEST->execute($currData);
+		}
+	}
+    
+	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;
+	}
+}
+
+// 提交更改
+$PDO_DEST->commit();
+echo "done".PHP_EOL;
+
+
+
+
+
+

+ 44 - 0
deploy/migaration/20211126220400-pali_sent_index-upgrade.php

@@ -0,0 +1,44 @@
+<?php
+require_once "../../app/path.php";
+
+
+$dest_db=_FILE_DB_PALI_SENTENCE_;#目标数据库
+$dest_table=_TABLE_PALI_SENT_INDEX_;#目标表名
+
+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);
+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] ";
+	exit;
+}
+$stmt->execute();
+echo "delete dest".PHP_EOL;
+
+#插入数据
+$query = "INSERT INTO ".$dest_table." (book, para, strlen ) SELECT book,paragraph,sum(length) FROM "._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] ";
+	exit;
+}
+$stmt->execute();
+echo "insert dest".PHP_EOL;
+
+echo "done".PHP_EOL;
+
+
+
+
+
+