Parcourir la source

相似句 数据迁移

visuddhinanda il y a 4 ans
Parent
commit
452f0bace8

+ 2 - 2
app/db/pali_sim_sent.php

@@ -5,7 +5,7 @@ require_once "../db/table.php";
 class PaliSimSentence extends Table
 {
     function __construct($redis=false) {
-		parent::__construct(_FILE_DB_PALI_SENTENCE_SIM_, "sent_sim", "", "",$redis);
+		parent::__construct(_FILE_DB_PALI_SENTENCE_SIM_, _TABLE_SENT_SIM_, "", "",$redis);
     }
 
 	public function getSimById($id)
@@ -17,7 +17,7 @@ class PaliSimSentence extends Table
 					return  json_decode($result,true);
 				}
 			}
-			$query = "SELECT sent2 as id  FROM sent_sim WHERE  sent1 = ? ";
+			$query = "SELECT sent2 as id  FROM ".$this->table." WHERE  sent1 = ? ";
 			$stmt = $this->dbh->prepare($query);
 			if($stmt){
 				$stmt->execute(array($id));

+ 2 - 2
app/pali_sent/get_sim.php

@@ -10,9 +10,9 @@ require_once "../public/function.php";
 
 if (isset($_POST["sent_id"])) {
     $dns = _FILE_DB_PALI_SENTENCE_SIM_;
-    $dbh_sim = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
+    $dbh_sim = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
     $dbh_sim->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
-    $query = "SELECT sent2 FROM sent_sim WHERE  sent1 = ? limit 10";
+    $query = "SELECT sent2 FROM "._TABLE_SENT_SIM_." WHERE  sent1 = ? limit 10";
     $stmt = $dbh_sim->prepare($query);
     $stmt->execute(array($_POST["sent_id"]));
     $simList = $stmt->fetchAll(PDO::FETCH_ASSOC);

+ 1 - 1
app/pali_sent/redis_upgrade_pali_sent.php

@@ -58,7 +58,7 @@ if (isset($argv[1])) {
 			}
 			$result = $redis->hSet('pali://sent/' . $sent["book"] . "_" . $sent["paragraph"] . "_" . $sent["begin"] . "_" . $sent["end"], "id", $sent["id"]);	
 
-			$query = "SELECT count FROM 'sent_sim_index' WHERE sent_id = ? ";
+			$query = "SELECT count FROM "._TABLE_SENT_SIM_INDEX_." WHERE sent_id = ? ";
 			$sth = $db_pali_sent_sim->prepare($query);
 			$sth->execute(array($sent["id"]));
 			$row = $sth->fetch(PDO::FETCH_ASSOC);

+ 21 - 9
app/path.sample.php

@@ -148,14 +148,25 @@ define("_TABLE_PALI_SENT_", "pali_sent");
 define("_TABLE_PALI_SENT_ORG_", "pali_sent_org");
 define("_TABLE_PALI_SENT_INDEX_", "pali_sent_index");
 
-//相似句
-//define("_FILE_DB_PALI_SENTENCE_SIM_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
-define("_FILE_DB_PALI_SENTENCE_SIM_", "sqlite:" . __DIR__ . "/../tmp/appdata/palicanon/pali_sim.db3");
+/*
+相似句
+数据迁移 
+deploy\migaration\20211127214800_sent_sim.php
+deploy\migaration\20211127214900-sent_sim_index.php
+*/
+define("_FILE_DB_PALI_SENTENCE_SIM_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
+//define("_FILE_DB_PALI_SENTENCE_SIM_", "sqlite:" . __DIR__ . "/../tmp/appdata/palicanon/pali_sim.db3");
+define("_SRC_DB_PALI_SENTENCE_SIM_", "sqlite:" . __DIR__ . "/../tmp/appdata/palicanon/pali_sim.db3");
+define("_TABLE_SENT_SIM_", "sent_sim");
+define("_TABLE_SENT_SIM_INDEX_", "sent_sim_index");
+
 
 
-//标题表
+//完成度
 //define("_FILE_DB_PALI_TOC_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_PALI_TOC_", "sqlite:" . __DIR__ . "/../tmp/appdata/palicanon/pali_toc.db3");
+define("_TABLE_PROGRESS_", "progress");
+define("_TABLE_PROGRESS_CHAPTER_", "progress_chapter");
 
 
 //页码对应
@@ -221,6 +232,7 @@ define("_TABLE_SENTENCE_BLOCK_", "sent_block");
 //define("_FILE_DB_USER_SENTENCE_HISTORAY_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_USER_SENTENCE_HISTORAY_", "sqlite:" . __DIR__ . "/../tmp/user/usent_historay.db3");
 define("_TABLE_SENTENCE_HISTORAY_", "sent_historay");
+
 # 逐词解析字典
 //define("_FILE_DB_WBW_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_WBW_", "sqlite:" . __DIR__ . "/../tmp/user/wbw.db3");
@@ -285,21 +297,21 @@ define("_FILE_DB_MESSAGE_", "sqlite:" . __DIR__ . "/../tmp/user/message.db");
 define("_FILE_DB_LIKE_", "sqlite:" . __DIR__ . "/../tmp/user/like.db3");
 
 
-
 //很少使用
 # 网站设置
 //define("_FILE_DB_HOSTSETTING_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_HOSTSETTING_", "sqlite:" . __DIR__ . "/../tmp/user/hostsetting.db3");
 
-# 用户图片数据 尚未启用
-//define("_FILE_DB_MEDIA_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
-define("_FILE_DB_MEDIA_", "sqlite:" . __DIR__ . "/../tmp/user/media.db3");
 
 # 用户字典统计数据
 //define("_FILE_DB_USER_DICT_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_USER_DICT_", "sqlite:" . __DIR__ . "/../tmp/user/udict.db3");
 
 
+# 用户图片数据 尚未启用
+//define("_FILE_DB_MEDIA_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
+define("_FILE_DB_MEDIA_", "sqlite:" . __DIR__ . "/../tmp/user/media.db3");
+
 # 评论 尚未启用
 //define("_FILE_DB_COMMENTS_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_COMMENTS_", "sqlite:" . __DIR__ . "/../tmp/user/comments.db3");
@@ -308,6 +320,6 @@ define("_FILE_DB_COMMENTS_", "sqlite:" . __DIR__ . "/../tmp/user/comments.db3");
 //define("_FILE_DB_USER_STATISTICS_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_USER_STATISTICS_", "sqlite:" . __DIR__ . "/../tmp/user/statistics.db3");
 
-#权限管理
+#权限管理 casbin使用
 //define("_FILE_DB_USER_RBAC_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
 define("_FILE_DB_USER_RBAC_",  __DIR__ . "/../tmp/user/rbac.db3");

+ 1 - 1
app/term/note.php

@@ -141,7 +141,7 @@ foreach ($_data as $key => $value) {
 		//查询相似句
 
 
-			$query = "SELECT count FROM 'sent_sim_index' WHERE sent_id = ? ";
+			$query = "SELECT count FROM "._TABLE_SENT_SIM_INDEX_." WHERE sent_id = ? ";
 			$sth = $db_pali_sent_sim->prepare($query);
 			$sth->execute(array($pali_text_id));
 			$row = $sth->fetch(PDO::FETCH_ASSOC);

+ 3 - 0
db/sqlite/sent_sim/down.sql

@@ -0,0 +1,3 @@
+
+DROP INDEX  IF EXISTS  sent_sim_sent1 ;
+DROP TABLE sent_sim ;

+ 14 - 0
db/sqlite/sent_sim/up.sql

@@ -0,0 +1,14 @@
+
+-- 表:sent_sim
+CREATE TABLE sent_sim 
+(
+    id SERIAL PRIMARY KEY,
+	sent1 INTEGER, 
+	sent2 INTEGER, 
+	sim REAL,
+    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+-- 索引:sent
+CREATE INDEX sent_sim_sent1 ON sent_sim (sent1);
+

+ 2 - 0
db/sqlite/sent_sim_index/down.sql

@@ -0,0 +1,2 @@
+
+DROP TABLE sent_sim_index ;

+ 10 - 0
db/sqlite/sent_sim_index/up.sql

@@ -0,0 +1,10 @@
+
+-- 表:sent_sim_index
+CREATE TABLE sent_sim_index 
+(
+    id SERIAL PRIMARY KEY,
+	sent_id INTEGER,
+	count INTEGER,
+    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+

+ 72 - 0
deploy/migaration/20211127214800_sent_sim.php

@@ -0,0 +1,72 @@
+<?php
+require_once "../../app/path.php";
+
+$src_db=_SRC_DB_PALI_SENTENCE_SIM_;#源数据库
+$src_table=_TABLE_SENT_SIM_;#源表名
+$dest_db=_FILE_DB_PALI_SENTENCE_SIM_;#目标数据库
+$dest_table=_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);
+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." (sent1, sent2 , sim ) 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["sent1"],
+					(int)$srcData["sent2"],
+					(int)$srcData["sim"]
+				));
+	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/20211127214900-sent_sim_index.php

@@ -0,0 +1,44 @@
+<?php
+require_once "../../app/path.php";
+
+
+$dest_db=_FILE_DB_PALI_SENTENCE_SIM_;#目标数据库
+$dest_table=_TABLE_SENT_SIM_INDEX_;#目标表名
+
+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);
+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." (sent_id, count ) SELECT sent1,count(*) FROM "._TABLE_SENT_SIM_." where true group by sent1;";
+$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;
+
+
+
+
+
+