Bläddra i källkod

copy table date from sqlite

visuddhinanda 4 år sedan
förälder
incheckning
c30ec13b8f

+ 183 - 0
v1/scripts/migrations/20211204120600_wbw_blocks_copy.php

@@ -0,0 +1,183 @@
+<?php
+/*
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+// Require Composer's autoloader.
+require_once __DIR__.'/../../vendor/autoload.php';
+require_once __DIR__."/../../app/config.php";
+require_once __DIR__."/../../app/public/snowflakeid.php";
+
+# 更新索引表
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+$src_db=_SRC_DB_USER_WBW_;#源数据库
+$src_table=_TABLE_SRC_USER_WBW_BLOCK_;#源表名
+
+$dest_db=_FILE_DB_USER_WBW_;#目标数据库
+$dest_table=_TABLE_USER_WBW_BLOCK_;#目标表名
+
+# 雪花id
+$snowflake = new SnowFlakeId();
+
+fwrite(STDOUT, "migarate wbw_block".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".PHP_EOL);
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+
+#打开源数据库
+$PDO_SRC = new PDO($src_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_SRC->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT, "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);
+fwrite(STDOUT, "open dest".PHP_EOL);
+
+// 开始一个事务,关闭自动提交
+
+fwrite(STDOUT, "begin Transaction".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								   (
+									id,
+									uid, 
+									parent_id , 
+									channel_uid, 
+									parent_channel_uid,
+									creator_uid,
+									editor_id,
+									book_id,
+									paragraph,
+									style,
+									lang,
+									status,
+									create_time,
+									modify_time,
+									created_at,
+									updated_at
+									) 
+									VALUES ( ?,? , ? , ? , ? ,? ,? ,? ,? ,? ,? ,?,?,to_timestamp(?),to_timestamp(?))";
+
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["owner"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,"no user id {$srcData["owner"]}".PHP_EOL);
+		continue;
+	}
+
+	#插入目标表
+	if(empty($srcData["parent_id"])){
+		$srcData["parent_id"] = NULL;
+	}
+	if(empty($srcData["channal"])){
+		$srcData["channal"] = NULL;
+	}
+	if(empty($srcData["status"])){
+		$srcData["status"] = 10;
+	}
+	if(substr($srcData["book"],0,1)==="p"){
+		$srcData["book"] = (int)substr($srcData["book"],1);
+	}
+	
+	if(strlen($srcData["id"])>10 && strlen($srcData["owner"])>30){
+		$uuid = $srcData["id"];
+		#查询目标表中是否有相同数据
+		$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+		$getExist = $PDO_DEST->prepare($queryExsit);
+		$getExist->execute(array($uuid));
+		$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+		if(!$exist){
+			#没有相同数据
+			$commitData[] = array(
+					$snowflake->id(),
+					$uuid,
+					trim($srcData["parent_id"],"{}"),
+					trim($srcData["channal"],"{}"),
+					trim($srcData["parent_channel"],"{}"),
+					trim($srcData["owner"],"{}"),
+					$userId["id"],
+					(int)$srcData["book"],
+					(int)$srcData["paragraph"],
+					$srcData["style"],
+					$srcData["lang"],
+					(int)$srcData["status"],
+					$srcData["create_time"],
+					$srcData["modify_time"],
+					$srcData["create_time"]/1000,
+					$srcData["modify_time"]/1000
+				);	
+			$count++;	
+			$allInsertCount++;
+		}
+
+		if($count ==10000){
+			#10000行插入一次
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					fwrite(STDERR, "error - $error[2] ");
+					exit;
+				}
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			$commitData = [];
+			fwrite(STDOUT, "finished $count".PHP_EOL);
+			$count=0;
+		}	
+	}
+}
+if($count>0){
+	#最后的剩余的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			fwrite(STDERR, "error - $error[2] ");
+			exit;
+		}
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	$commitData = [];
+	fwrite(STDOUT, "finished $count".PHP_EOL);
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL);
+
+
+
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 136 - 0
v1/scripts/migrations/20211204120700_wbws_copy.php

@@ -0,0 +1,136 @@
+<?php
+/*
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+// Require Composer's autoloader.
+require_once __DIR__.'/../../vendor/autoload.php';
+require_once __DIR__."/../../app/config.php";
+require_once __DIR__."/../../env.php";
+
+
+# 雪花id
+$snowflake = new SnowFlakeId();
+
+
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+# 更新数据表
+$src_db=_SRC_DB_USER_WBW_;#源数据库
+$src_table=_TABLE_SRC_USER_WBW_;#源表名
+
+$dest_db=_FILE_DB_USER_WBW_;#目标数据库
+$dest_table=_TABLE_USER_WBW_;#目标表名
+
+echo "migarating wbw".PHP_EOL;
+
+// 开始一个事务,关闭自动提交
+
+
+$queryInsert = "INSERT INTO ".$dest_table." (
+									  id,
+	                                  uid, 
+									  block_uid , 
+									  book_id, 
+									  paragraph,
+									  wid,
+									  word,
+									  data,
+									  status,
+									  creator_uid,
+									  create_time,
+									  modify_time,
+									  created_at,
+									  updated_at) VALUES ( ?,? , ? , ? , ? ,? ,? ,? ,? ,? ,? ,?,to_timestamp(?),to_timestamp(?))";
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+	$uuid = $srcData["id"];
+	#查询目标表中是否有相同数据
+	$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+	$getExist = $PDO_DEST->prepare($queryExsit);
+	$getExist->execute(array($uuid));
+	$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+	if(!$exist){
+		#没有相同的数据就插入
+		$commitData[] = array(
+			$snowflake->id(),
+			$uuid,
+			$srcData["block_id"],
+			$srcData["book"],
+			$srcData["paragraph"],
+			$srcData["wid"],
+			$srcData["word"],
+			$srcData["data"],
+			$srcData["status"],
+			$srcData["owner"],
+			$srcData["create_time"],
+			$srcData["modify_time"],
+			$srcData["create_time"]/1000,
+			$srcData["modify_time"]/1000
+		);
+		$count++;
+		$allInsertCount++;
+		if($count === 10000){
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				# code...
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}	
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			echo "finished $count".PHP_EOL;
+			$count = 0;
+			$commitData = [];
+		}
+	}
+	if($allSrcCount % 10000 ==0){
+		echo "find from src table $allSrcCount / $allInsertCount is new.".PHP_EOL;
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		# code...
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}	
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+echo "all done".PHP_EOL;
+
+
+
+
+
+

+ 259 - 0
v1/scripts/migrations/20211207052900_sent_copy.php

@@ -0,0 +1,259 @@
+<?php
+/*
+迁移 sentence库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+# 更新索引表
+$src_db=_SRC_DB_SENTENCE_;#源数据库
+$src_table=_TABLE_SRC_SENTENCE_BLOCK_;#源表名
+$dest_db=_FILE_DB_SENTENCE_;#目标数据库
+$dest_table=_TABLE_SENTENCE_BLOCK_;#目标表名
+
+fwrite(STDOUT,"migarate sent_block".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." (uid, 
+									parent_uid , 
+									book_id,
+									paragraph,
+									owner_uid,
+									lang,
+									author,
+									editor_uid,
+									status,
+									create_time,
+									modify_time,
+									created_at,
+									updated_at) 
+									VALUES ( ? , ? , ? , ? ,? ,? ,? ,? ,? ,? ,?,to_timestamp(?),to_timestamp(?))";
+
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+
+	if(substr($srcData["book"],0,1)==="p"){
+		$srcData["book"] = (int)substr($srcData["book"],1);
+	}
+	
+	if(strlen($srcData["id"])>10 && strlen($srcData["owner"])>30){
+		$uuid = strtolower(trim($srcData["id"],"{}"));
+		#查询目标表中是否有相同数据
+		$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+		$getExist = $PDO_DEST->prepare($queryExsit);
+		$getExist->execute(array($uuid));
+		$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+		if(!$exist){
+			#没有相同数据
+			if(strlen($srcData["editor"])>36){
+				fwrite(STDERR,"error: {$uuid} editor {$srcData["editor"]} is too long".PHP_EOL);
+				continue;
+			}
+			$commitData[] = array(
+					$uuid,
+					trim($srcData["parent_id"],"{}"),
+					(int)$srcData["book"],
+					(int)$srcData["paragraph"],
+					strtolower(trim($srcData["owner"],"{}")),
+					$srcData["lang"],
+					$srcData["author"],
+					$srcData["editor"],
+					(int)$srcData["status"],
+					$srcData["modify_time"],
+					$srcData["modify_time"],
+					$srcData["modify_time"]/1000,
+					$srcData["modify_time"]/1000
+				);	
+			$count++;	
+			$allInsertCount++;
+		}
+
+		if($count ==10000){
+			#10000行插入一次
+			// 开始一个事务,关闭自动提交
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			$commitData = [];
+			echo "finished $count".PHP_EOL;
+			$count=0;
+		}	
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	$commitData = [];
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+# 更新数据表
+
+$src_db=_SRC_DB_USER_WBW_;#源数据库
+$src_table=_TABLE_SRC_SENTENCE_;#源表名
+$dest_db=_FILE_DB_USER_WBW_;#目标数据库
+$dest_table=_TABLE_SENTENCE_;#目标表名
+
+echo "migarating wbw".PHP_EOL;
+
+// 开始一个事务,关闭自动提交
+
+
+$queryInsert = "INSERT INTO ".$dest_table." (
+	                                  uid, 
+									  parent_uid,
+									  block_uid , 
+									  channel_uid,
+									  book_id, 
+									  paragraph,
+									  word_start,
+									  word_end,
+									  author,
+									  editor_uid,
+									  content,
+									  language,
+									  version,
+									  status,
+									  strlen,
+									  create_time,
+									  modify_time,
+									  created_at,
+									  updated_at) VALUES ( ? , ? , ? , ? ,? ,? ,? ,? ,? ,? ,?,?,?,?,?,?,?,to_timestamp(?),to_timestamp(?))";
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+	$uuid = strtolower(trim($srcData["id"],"{}"));
+	#查询目标表中是否有相同数据
+	$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+	$getExist = $PDO_DEST->prepare($queryExsit);
+	$getExist->execute(array($uuid));
+	$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+	if(!$exist){
+		if(strlen($srcData["editor"])>36){
+			fwrite(STDERR,"error: {$uuid} editor {$srcData["editor"]} too long".PHP_EOL);
+			continue;
+		}
+		$commitData[] = array(
+			$uuid,
+			$srcData["parent"],
+			$srcData["block_id"],
+			$srcData["channal"],
+			(int)$srcData["book"],
+			(int)$srcData["paragraph"],
+			(int)$srcData["begin"],
+			(int)$srcData["end"],
+			$srcData["author"],
+			$srcData["editor"],
+			$srcData["text"],
+			$srcData["language"],
+			(int)$srcData["ver"],
+			(int)$srcData["status"],
+			(int)$srcData["strlen"],
+			$srcData["create_time"],
+			$srcData["modify_time"],
+			$srcData["create_time"]/1000,
+			$srcData["modify_time"]/1000
+		);
+		$count++;
+		$allInsertCount++;
+		if($count === 10000){
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				# code...
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}	
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			echo "finished $count".PHP_EOL;
+			$count = 0;
+		}
+	}
+	if($allSrcCount % 10000 ==0){
+		echo "find from src table $allSrcCount / $allInsertCount is new.".PHP_EOL;
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		# code...
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}	
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+echo "all done".PHP_EOL;
+
+
+
+
+
+

+ 146 - 0
v1/scripts/migrations/20211207164600_sent_pr_copy.php

@@ -0,0 +1,146 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+# 更新索引表
+$src_db=_SRC_DB_SENTENCE_;#源数据库
+$src_table=_TABLE_SRC_SENTENCE_PR_;#源表名
+$dest_db=_FILE_DB_SENTENCE_;#目标数据库
+$dest_table=_TABLE_SENTENCE_PR_;#目标表名
+
+fwrite(STDOUT,"migarate sent_pr".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									id, 
+									book_id,
+									paragraph,
+									word_start,
+									word_end,
+									channel_uid,
+									author,
+									editor_uid,
+									content,
+									language,
+									status,
+									strlen,
+									create_time,
+									modify_time,
+									created_at,
+									updated_at) 
+									VALUES ( ? , ? , ? , ? ,? ,? ,? ,? ,? ,? ,?,?,?,?,to_timestamp(?),to_timestamp(?))";
+
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+
+	if(substr($srcData["book"],0,1)==="p"){
+		$srcData["book"] = (int)substr($srcData["book"],1);
+	}
+	{
+		$uuid = $srcData["id"];
+		#查询目标表中是否有相同数据
+		$queryExsit = "SELECT id  FROM ".$dest_table." WHERE id = ? ";
+		$getExist = $PDO_DEST->prepare($queryExsit);
+		$getExist->execute(array($uuid));
+		$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+		if(!$exist){
+			#没有相同数据
+			if(strlen($srcData["editor"])>36){
+				fwrite(STDERR,"error: {$uuid} editor {$srcData["editor"]} is too long".PHP_EOL);
+				continue;
+			}
+			$commitData[] = array(
+					$uuid,
+					(int)$srcData["book"],
+					(int)$srcData["paragraph"],
+					(int)$srcData["begin"],
+					(int)$srcData["end"],
+					$srcData["channel"],
+					$srcData["author"],
+					$srcData["editor"],
+					$srcData["text"],
+					$srcData["language"],
+					(int)$srcData["status"],
+					(int)$srcData["strlen"],
+					$srcData["create_time"],
+					$srcData["modify_time"],
+					$srcData["create_time"]/1000,
+					$srcData["modify_time"]/1000
+				);	
+			$count++;	
+			$allInsertCount++;
+		}
+
+		if($count ==10000){
+			#10000行插入一次
+			// 开始一个事务,关闭自动提交
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			$commitData = [];
+			echo "finished $count".PHP_EOL;
+			$count=0;
+		}	
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	$commitData = [];
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+echo "all done".PHP_EOL;
+
+
+
+
+
+

+ 118 - 0
v1/scripts/migrations/20211207171500_sent_historay_copy.php

@@ -0,0 +1,118 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+# 更新索引表
+$src_db=_SRC_USER_SENTENCE_HISTORAY_;#源数据库
+$src_table=_TABLE_SRC_SENTENCE_HISTORAY_;#源表名
+$dest_db=_FILE_DB_USER_SENTENCE_HISTORAY_;#目标数据库
+$dest_table=_TABLE_SENTENCE_HISTORAY_;#目标表名
+
+fwrite(STDOUT,"migarate sent_historay".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									sent_uid,
+									user_uid,
+									content,
+									landmark,
+									date,
+									created_at) 
+									VALUES ( ? , ? , ? , ? , ? , to_timestamp(?))";
+
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+
+	{
+		#查询目标表中是否有相同数据
+		$queryExsit = "SELECT id  FROM ".$dest_table." WHERE sent_uid = ? and user_uid = ? and content=? and date=? ";
+		$getExist = $PDO_DEST->prepare($queryExsit);
+		$getExist->execute(array($srcData["sent_id"],$srcData["user_id"],$srcData["text"],$srcData["date"]));
+		$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+		if(!$exist){
+			#没有相同数据
+			$commitData[] = array(
+					$srcData["sent_id"],
+					$srcData["user_id"],
+					$srcData["text"],
+					$srcData["landmark"],
+					(int)$srcData["date"],
+					$srcData["date"]/1000
+				);	
+			$count++;	
+			$allInsertCount++;
+		}
+
+		if($count ==10000){
+			#10000行插入一次
+			// 开始一个事务,关闭自动提交
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			$commitData = [];
+			echo "finished $count".PHP_EOL;
+			$count=0;
+		}	
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	$commitData = [];
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+echo "all done".PHP_EOL;
+
+
+
+
+
+

+ 258 - 0
v1/scripts/migrations/20211210160700_user_dict_copy.php

@@ -0,0 +1,258 @@
+<?php
+/*
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+# 更新索引表
+$src_db=_FILE_SRC_WBW_;#源数据库
+$src_table=_TABLE_SRC_DICT_WBW_;#源表名
+$dest_db=_FILE_DB_WBW_;#目标数据库
+$dest_table=_TABLE_DICT_WBW_;#目标表名
+
+echo "migarate user dict".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;
+
+#删除源数据表中全部数据
+fwrite(STDOUT,"delete dest".PHP_EOL);
+
+$query = "delete from $dest_table where true;";
+$stmtDest = $PDO_DEST->prepare($query);
+$stmtDest->execute();
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									word , 
+									type, 
+									gramma,
+									parent,
+									mean,
+									note,
+									factors,
+									factormean,
+									status,
+									source,
+									language,
+									confidence,
+									creator_id,
+									ref_counter,
+									create_time,
+									created_at,
+									updated_at
+								) 
+									VALUES ( ? , ? , ? ,? ,? ,? ,? ,? ,? ,? , ?,?,?,?,?,to_timestamp(?),to_timestamp(?))";
+
+echo "read from orginal".PHP_EOL;
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+	
+	//if(strlen($srcData["id"])>10 && strlen($srcData["owner"])>30)
+	{
+
+		{
+			#没有相同数据
+			$commitData[] = array(
+					$srcData["pali"],
+					$srcData["type"],
+					$srcData["gramma"],
+					$srcData["parent"],
+					$srcData["mean"],
+					$srcData["note"],
+					$srcData["factors"],
+					$srcData["factormean"],
+					(int)$srcData["status"],
+					"_SYS_USER_WBW_",
+					$srcData["language"],
+					(int)$srcData["confidence"],
+					(int)$srcData["creator"],
+					$srcData["ref_counter"],
+					$srcData["time"],
+					$srcData["time"],
+					$srcData["time"]
+				);	
+			$count++;	
+			$allInsertCount++;
+		}
+
+		if($count ==10000){
+			#10000行插入一次
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			$commitData = [];
+			echo "finished $count".PHP_EOL;
+			$count=0;
+		}	
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			echo "error - $error[2] ";
+			exit;
+		}
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	$commitData = [];
+	echo "finished $count".PHP_EOL;
+}
+
+echo "insert done $allInsertCount in $allSrcCount ".PHP_EOL;
+
+# 更新索引表
+
+$src_table=_TABLE_SRC_DICT_WBW_INDEX_;#源表名
+$src_word_table=_TABLE_SRC_DICT_WBW_;#源word表名
+
+echo "migarating usr dict index ".PHP_EOL;
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									word , 
+									type, 
+									gramma,
+									parent,
+									mean,
+									note,
+									factors,
+									factormean,
+									status,
+									source,
+									language,
+									confidence,
+									creator_id,
+									ref_counter,
+									create_time,
+									created_at,
+									updated_at
+								) 
+									VALUES ( ? , ? , ? ,? ,? ,? ,? ,? ,? ,? , ?,?,?,?,?, to_timestamp(?), to_timestamp(?))";
+
+
+// 开始一个事务,关闭自动提交
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+	$wordIndex = $srcData["word_index"];
+	#查询目标表中的数据
+	$queryExsit = "SELECT *  FROM ".$src_word_table." WHERE id = ? ";
+	$getWord = $PDO_SRC->prepare($queryExsit);
+	$getWord->execute(array($wordIndex));
+	$exist = $getWord->fetch(PDO::FETCH_ASSOC);
+	if($exist){
+		$commitData[] = array(
+			$exist["pali"],
+			$exist["type"],
+			$exist["gramma"],
+			$exist["parent"],
+			$exist["mean"],
+			$exist["note"],
+			$exist["factors"],
+			$exist["factormean"],
+			(int)$exist["status"],
+			"_USER_WBW_",
+			$exist["language"],
+			(int)$exist["confidence"],
+			(int)$srcData["user_id"],
+			$exist["ref_counter"],
+			$exist["time"],
+			$exist["time"],
+			$exist["time"]
+		);
+		$count++;
+		$allInsertCount++;
+		if($count === 10000){
+			$PDO_DEST->beginTransaction();
+			$stmtDEST = $PDO_DEST->prepare($queryInsert);
+			foreach ($commitData as $key => $value) {
+				# code...
+				$stmtDEST->execute($value);
+				if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+					$error = $PDO_DEST->errorInfo();
+					echo "error - $error[2] ";
+					exit;
+				}	
+			}
+			// 提交更改
+			$PDO_DEST->commit();
+			echo "finished $count".PHP_EOL;
+			$count = 0;
+		}
+	}else{
+		fwrite(STDERR,"error: no word index - $wordIndex".PHP_EOL);
+	}
+	if($allSrcCount % 10000 ==0){
+		fwrite(STDOUT,"find from src table $allSrcCount / $allInsertCount is new.".PHP_EOL) ;
+	}
+}
+if($count>0){
+	#最后的没有到10000的数据插入
+	$PDO_DEST->beginTransaction();
+	$stmtDEST = $PDO_DEST->prepare($queryInsert);
+	foreach ($commitData as $key => $value) {
+		# code...
+		$stmtDEST->execute($value);
+		if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+			$error = $PDO_DEST->errorInfo();
+			fwrite(STDOUT,"error - $error[2] ");
+			exit;
+		}	
+	}
+	// 提交更改
+	$PDO_DEST->commit();
+	fwrite(STDOUT,"finished $count".PHP_EOL);
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL);
+
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 118 - 0
v1/scripts/migrations/20211214181900_user_operation_log_copy.php

@@ -0,0 +1,118 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+$active_type[10] = "channel_update";
+$active_type[11] = "channel_create";
+$active_type[20] = "article_update";
+$active_type[21] = "article_create";
+$active_type[30] = "dict_lookup";
+$active_type[40] = "term_update";
+$active_type[42] = "term_create";
+$active_type[41] = "term_lookup";
+$active_type[60] = "wbw_update";
+$active_type[61] = "wbw_create";
+$active_type[70] = "sent_update";
+$active_type[71] = "sent_create";
+$active_type[80] = "collection_update";
+$active_type[81] = "collection_create";
+$active_type[90] = "nissaya_open";
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+# 更新索引表
+$src_db=_FILE_SRC_USER_ACTIVE_LOG_;#源数据库
+$src_table=_TABLE_SRC_USER_OPERATION_LOG_;#源表名
+
+$dest_db=_FILE_DB_USER_ACTIVE_LOG_;#目标数据库
+$dest_table=_TABLE_USER_OPERATION_LOG_;#目标表名
+
+fwrite(STDOUT,"migarate user opration log".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+#删除源数据表中全部数据
+fwrite(STDOUT,"delete dest".PHP_EOL);
+
+$query = "delete from $dest_table where true;";
+$stmtDest = $PDO_DEST->prepare($query);
+$stmtDest->execute();
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									user_id,
+									op_type_id,
+									op_type,
+									content,
+									timezone,
+									create_time,
+									created_at) 
+									VALUES ( ? , ? , ? , ? ,? , ? , to_timestamp(?))";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	#插入目标表
+	$commitData = array(
+			$srcData["user_id"],
+			$srcData["active"],
+			$active_type[$srcData["active"]],
+			$srcData["content"],
+			$srcData["timezone"],
+			$srcData["time"],
+			$srcData["time"]/1000
+		);	
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行插入一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 112 - 0
v1/scripts/migrations/20211214190200_user_operation_frames_copy.php

@@ -0,0 +1,112 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+# 更新索引表
+$src_db = _FILE_SRC_USER_ACTIVE_;#源数据库
+$src_table = _TABLE_SRC_USER_OPERATION_FRAME_;#源表名
+
+$dest_db = _FILE_DB_USER_ACTIVE_;#目标数据库
+$dest_table = _TABLE_USER_OPERATION_FRAME_;#目标表名
+
+fwrite(STDOUT,"migarate user opration frame".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+#删除目标数据表中全部数据
+fwrite(STDOUT,"delete dest".PHP_EOL);
+
+$query = "delete from $dest_table where true;";
+$stmtDest = $PDO_DEST->prepare($query);
+$stmtDest->execute();
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									user_id,
+									duration,
+									hit,
+									timezone,
+									op_start,
+									op_end,
+									created_at,
+									updated_at) 
+									VALUES ( ? , ? , ? , ? , ? , ? , to_timestamp(?), to_timestamp(?))";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["user_id"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,"no user id {$srcData["user_id"]}".PHP_EOL);
+		continue;
+	}
+	#插入目标表
+	$commitData = array(
+			$userId["id"],
+			$srcData["duration"],
+			$srcData["hit"],
+			$srcData["timezone"],
+			$srcData["start"],
+			$srcData["end"],
+			$srcData["start"]/1000,
+			$srcData["end"]/1000
+		);	
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行插入一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 110 - 0
v1/scripts/migrations/20211214191900_user_operation_dailys_copy.php

@@ -0,0 +1,110 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+# 更新索引表
+$src_db = _FILE_SRC_USER_ACTIVE_;#源数据库
+$src_table = _TABLE_SRC_USER_OPERATION_DAILY_;#源表名
+
+$dest_db = _FILE_DB_USER_ACTIVE_;#目标数据库
+$dest_table = _TABLE_USER_OPERATION_DAILY_;#目标表名
+
+fwrite(STDOUT,"migarate user opration frame".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+#删除目标数据表中全部数据
+fwrite(STDOUT,"delete dest".PHP_EOL);
+
+$query = "delete from $dest_table where true;";
+$stmtDest = $PDO_DEST->prepare($query);
+$stmtDest->execute();
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									user_id,
+									date_at,
+									date_int,
+									duration,
+									hit,
+									updated_at,
+									created_at) 
+									VALUES ( ? , to_timestamp(?) , ? , ? , ? , to_timestamp(?), to_timestamp(?))";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["user_id"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,"no user id {$srcData["user_id"]}".PHP_EOL);
+		continue;
+	}
+	#插入目标表
+	$commitData = array(
+			$userId["id"],
+			$srcData["date"]/1000,
+			$srcData["date"],
+			$srcData["duration"],
+			$srcData["hit"],
+			$srcData["date"]/1000,
+			$srcData["date"]/1000
+		);	
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行插入一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 137 - 0
v1/scripts/migrations/20211215214400_channel_copy.php

@@ -0,0 +1,137 @@
+<?php
+/*
+迁移  sentence pr 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__.'/../../vendor/autoload.php';
+require_once __DIR__."/../../app/config.php";
+require_once __DIR__."/../../app/public/snowflakeid.php";
+
+# 雪花id
+$snowflake = new SnowFlakeId();
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+
+# 更新索引表
+$src_db = _FILE_SRC_CHANNEL_;#源数据库
+$src_table = _TABLE_SRC_CHANNEL_;#源表名
+
+$dest_db = _FILE_DB_CHANNAL_;#目标数据库
+$dest_table = _TABLE_CHANNEL_;#目标表名
+
+fwrite(STDOUT,"migarate channel".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									id,
+									uid,
+									owner_uid,
+									editor_id,
+									name,
+									summary,
+									status,
+									lang,
+									setting,
+									create_time,
+									modify_time,
+									updated_at,
+									created_at) 
+									VALUES ( ? ,? , ? ,  ?, ? , ? ,? , ? , ? , ? , ? , to_timestamp(?), to_timestamp(?))";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["owner"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,"no user id {$srcData["owner"]}".PHP_EOL);
+		continue;
+	}
+	if(strlen($srcData["owner"])>36){
+		fwrite(STDERR,"user id too long {$srcData["owner"]}".PHP_EOL);
+		continue;	
+	}
+	$uuid = $srcData["id"];
+	#查询目标表中是否有相同数据
+	$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+	$getExist = $PDO_DEST->prepare($queryExsit);
+	$getExist->execute(array($uuid));
+	$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+	if($exist){
+		#有相同数据
+		continue;
+	}
+		
+	#插入目标表
+	$commitData = array(
+			$snowflake->id(),
+			$srcData["id"],
+			$srcData["owner"],
+			$userId["id"],
+			$srcData["name"],
+			$srcData["summary"],
+			$srcData["status"],
+			$srcData["lang"],
+			$srcData["setting"],
+			$srcData["create_time"],
+			$srcData["modify_time"],
+			$srcData["create_time"]/1000,
+			$srcData["modify_time"]/1000
+		);	
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行插入一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+
+

+ 133 - 0
v1/scripts/migrations/20211218093500_articles_copy.php

@@ -0,0 +1,133 @@
+<?php
+/*
+迁移  article 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+# 
+$src_db = _FILE_SRC_USER_ARTICLE_;#源数据库
+$src_table = _TABLE_SRC_ARTICLE_;#源表名
+
+$dest_db = _FILE_DB_USER_ARTICLE_;#目标数据库
+$dest_table = _TABLE_ARTICLE_;#目标表名
+
+fwrite(STDOUT,"migarate article".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									uid,
+									title,
+									subtitle,
+									summary,
+									content,
+									owner,
+									owner_id,
+									editor_id,
+									setting,
+									status,
+									lang,
+									create_time,
+									modify_time,
+									updated_at,
+									created_at) 
+									VALUES ( ? , ? , ?, ? , ? ,? , ? , ? , ? , ? , ? , ?,? ,?,?)";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["owner"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,time()."error,no user id {$srcData["owner"]}".PHP_EOL);
+		continue;
+	}
+	if(strlen($srcData["owner"])>36){
+		fwrite(STDERR,time().",error,user id too long {$srcData["owner"]}".PHP_EOL);
+		continue;	
+	}
+	//查询是否已经插入
+	$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+	$getExist = $PDO_DEST->prepare($queryExsit);
+	$getExist->execute(array($srcData["id"]));
+	$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+	if($exist){
+		continue;
+	}
+	#插入目标表
+	$created_at = date("Y-m-d H:i:s.",$srcData["create_time"]/1000).($srcData["create_time"]%1000)." UTC";
+	$updated_at = date("Y-m-d H:i:s.",$srcData["modify_time"]/1000).($srcData["modify_time"]%1000)." UTC";
+	$commitData = array(
+			$srcData["id"],
+			$srcData["title"],
+			$srcData["subtitle"],
+			$srcData["summary"],
+			$srcData["content"],
+			$srcData["owner"],
+			$userId["id"],
+			$userId["id"],
+			$srcData["setting"],
+			$srcData["status"],
+			$srcData["lang"],
+			$srcData["create_time"],
+			$srcData["modify_time"],
+			$created_at,
+			$updated_at
+		);
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行输出log 一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+

+ 131 - 0
v1/scripts/migrations/20211218132000_collections_copy.php

@@ -0,0 +1,131 @@
+<?php
+/*
+迁移  article 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+# 
+$src_db = _FILE_SRC_USER_ARTICLE_;#源数据库
+$src_table = _TABLE_SRC_COLLECTION_;#源表名
+
+$dest_db = _FILE_DB_USER_ARTICLE_;#目标数据库
+$dest_table = _TABLE_COLLECTION_;#目标表名
+
+fwrite(STDOUT,"migarate article".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									uid,
+									title,
+									subtitle,
+									summary,
+									article_list,
+									owner,
+									owner_id,
+									editor_id,
+									status,
+									lang,
+									create_time,
+									modify_time,
+									updated_at,
+									created_at) 
+									VALUES ( ? , ? , ?, ? ,? , ? , ? , ? , ? , ? , ?,? ,?,?)";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true ";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+	$stmtUser->execute(array($srcData["owner"]));
+	$userId = $stmtUser->fetch(PDO::FETCH_ASSOC);
+	if(!$userId){
+		fwrite(STDERR,time()."error,no user id {$srcData["owner"]}".PHP_EOL);
+		continue;
+	}
+	if(strlen($srcData["owner"])>36){
+		fwrite(STDERR,time().",error,user id too long {$srcData["owner"]}".PHP_EOL);
+		continue;	
+	}
+	//查询是否已经插入
+	$queryExsit = "SELECT id  FROM ".$dest_table." WHERE uid = ? ";
+	$getExist = $PDO_DEST->prepare($queryExsit);
+	$getExist->execute(array($srcData["id"]));
+	$exist = $getExist->fetch(PDO::FETCH_ASSOC);
+	if($exist){
+		continue;
+	}
+	#插入目标表
+	$created_at = date("Y-m-d H:i:s.",$srcData["create_time"]/1000).($srcData["create_time"]%1000)." UTC";
+	$updated_at = date("Y-m-d H:i:s.",$srcData["modify_time"]/1000).($srcData["modify_time"]%1000)." UTC";
+	$commitData = array(
+			$srcData["id"],
+			$srcData["title"],
+			$srcData["subtitle"],
+			$srcData["summary"],
+			$srcData["article_list"],
+			$srcData["owner"],
+			$userId["id"],
+			$userId["id"],
+			$srcData["status"],
+			$srcData["lang"],
+			$srcData["create_time"],
+			$srcData["modify_time"],
+			$created_at,
+			$updated_at
+		);
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行输出log 一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+

+ 103 - 0
v1/scripts/migrations/20211218133000_article_collection_copy.php

@@ -0,0 +1,103 @@
+<?php
+/*
+迁移  article 库
+从旧数据表中提取数据插入到新的表
+插入时用uuid判断是否曾经插入
+曾经插入就不插入了
+*/
+require_once __DIR__."/../../app/config.php";
+
+#user info
+$user_db=_FILE_DB_USERINFO_;#user数据库
+$user_table=_TABLE_USER_INFO_;#user表名
+
+# 
+$src_db = _FILE_SRC_USER_ARTICLE_;#源数据库
+$src_table = _TABLE_SRC_ARTICLE_COLLECTION_;#源表名
+
+$dest_db = _FILE_DB_USER_ARTICLE_;#目标数据库
+$dest_table = _TABLE_ARTICLE_COLLECTION_;#目标表名
+
+fwrite(STDOUT,"migarate _TABLE_ARTICLE_COLLECTION_".PHP_EOL);
+#打开user数据库
+$PDO_USER = new PDO($user_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
+$PDO_USER->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+fwrite(STDOUT,"open user table".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);
+fwrite(STDOUT,"open src table".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);
+fwrite(STDOUT,"open dest table".PHP_EOL);
+
+#删除目标数据表中全部数据
+fwrite(STDOUT,"delete dest".PHP_EOL);
+
+$query = "delete from $dest_table where true;";
+$stmtDest = $PDO_DEST->prepare($query);
+$stmtDest->execute();
+
+$queryInsert = "INSERT INTO ".$dest_table." 
+								(
+									collect_id,
+									article_id,
+									level,
+									title,
+									children,
+									updated_at,
+									created_at) 
+									VALUES ( ? , ? , ?, ? ,? , now(),now())";
+$stmtDEST = $PDO_DEST->prepare($queryInsert);
+
+$commitData = [];
+$allInsertCount = 0;
+$allSrcCount = 0;
+$count = 0;
+
+#从user数据表中读取
+$query = "SELECT id  FROM ".$user_table." WHERE userid = ? ";
+$stmtUser = $PDO_USER->prepare($query);
+
+#从源数据表中读取
+$query = "SELECT *  FROM ".$src_table." WHERE true order by id ASC";
+$stmtSrc = $PDO_SRC->prepare($query);
+$stmtSrc->execute();
+while($srcData = $stmtSrc->fetch(PDO::FETCH_ASSOC)){
+	$allSrcCount++;
+
+	#插入目标表
+	$commitData = array(
+			$srcData["collect_id"],
+			$srcData["article_id"],
+			$srcData["level"],
+			$srcData["title"],
+			$srcData["children"]
+		);
+	$stmtDEST->execute($commitData);
+	if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
+		$error = $PDO_DEST->errorInfo();
+		echo "error - $error[2] ";
+		exit;
+	}
+	$count++;	
+	$allInsertCount++;
+
+
+	if($count ==10000){
+		#10000行输出log 一次
+		echo "finished $count".PHP_EOL;
+		$count=0;
+	}	
+}
+
+fwrite(STDOUT,"insert done $allInsertCount in $allSrcCount ".PHP_EOL) ;
+fwrite(STDOUT,"all done".PHP_EOL);
+
+
+
+
+