step3_run.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. require_once '../path.php';
  3. set_error_handler(function(int $number, string $message) {
  4. echo "Handler captured error $number: '$message'" . PHP_EOL ;
  5. });
  6. $filename = $_GET["filename"];
  7. $dbname = $_GET["dbname"];
  8. if(isset($_GET["table"])){
  9. $table = $_GET["table"];
  10. }
  11. switch ($_GET["dbtype"]) {
  12. case "rich":
  13. case "system":
  14. if ($_GET["dbtype"] == "rich") {
  15. $sDescDbFile = _DIR_DICT_3RD_ . "/" . $dbname;
  16. $csvfile = _DIR_DICT_TEXT_ . "/rich/{$filename}";
  17. } else if ($_GET["dbtype"] == "system") {
  18. $sDescDbFile = _DIR_DICT_SYSTEM_ . "/" . $dbname;
  19. $csvfile = _DIR_DICT_TEXT_ . "/system/{$filename}";
  20. }
  21. $dns = "sqlite:" . $sDescDbFile;
  22. $dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  23. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  24. if (strstr($filename, ".", true) === strstr($dbname, ".", true)) {
  25. //建立数据库
  26. $_sql = file_get_contents('rich_dict.sql');
  27. $_arr = explode(';', $_sql);
  28. //执行sql语句
  29. foreach ($_arr as $_value) {
  30. $dbh->query($_value . ';');
  31. }
  32. echo $dns . "建立数据库成功<br>";
  33. }
  34. //$query = "DELETE from dict where 1";
  35. //$dbh->query($query);
  36. // 开始一个事务,关闭自动提交
  37. $dbh->beginTransaction();
  38. $query = "INSERT INTO dict ('id','pali', 'type', 'gramma', 'parent', 'mean', 'note', 'parts', 'partmean', 'status', 'confidence', 'len', 'dict_name', 'lang') VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
  39. $stmt = $dbh->prepare($query);
  40. $count = 0;
  41. // 打开文件并读取数据
  42. if (($fp = fopen($csvfile, "r")) !== false) {
  43. echo "正在处理 {$csvfile} <br>";
  44. while (($data = fgetcsv($fp, 0, ',')) !== false) {
  45. //id,wid,book,paragraph,word,real,type,gramma,mean,note,part,partmean,bmc,bmt,un,style,vri,sya,si,ka,pi,pa,kam
  46. try {
  47. //code...
  48. $stmt->execute($data);
  49. } catch (Throwable $e) {
  50. //throw $th;
  51. echo "幺蛾子数据在第{$count}行<br>";
  52. echo "Captured Throwable: " . $e->getMessage() . PHP_EOL;
  53. }
  54. $count++;
  55. }
  56. fclose($fp);
  57. echo "单词表load<br>";
  58. } else {
  59. echo "can not open csv file. ";
  60. }
  61. // 提交更改
  62. $dbh->commit();
  63. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  64. $error = $dbh->errorInfo();
  65. echo "error - $error[2] <br>";
  66. } else {
  67. echo "updata $count recorders.";
  68. }
  69. $dbh = null;
  70. break;
  71. case "thin":
  72. echo "doing filename: $filename dbname: $dbname <br>";
  73. $sDescDbFile = _DIR_DICT_SYSTEM_ . "/" . $dbname;
  74. $csvfile = _DIR_DICT_TEXT_ . "/thin/{$filename}";
  75. $dns = "sqlite:" . $sDescDbFile;
  76. $dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  77. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  78. // 开始一个事务,关闭自动提交
  79. $dbh->beginTransaction();
  80. if ($dbname === "ref.db") {
  81. if ($table === "dict") {
  82. $query = "INSERT INTO dict ('id','language', 'dict_id', 'eword', 'word', 'paliword', 'mean', 'length', 'status') VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? )";
  83. } else if ($table === "info") {
  84. $query = "INSERT INTO info ('language' , 'id' , 'shortname' , 'name') VALUES ( ? , ? , ? , ? )";
  85. } else {
  86. echo "table name unkow.";
  87. }
  88. } else if ($dbname === "ref1.db") {
  89. $query = "INSERT INTO dict ('id','eword', 'word', 'length', 'count') VALUES ( ? , ? , ? , ? , ? )";
  90. } else {
  91. echo "db name $dbname unkow.";
  92. }
  93. $stmt = $dbh->prepare($query);
  94. $count = 0;
  95. // 打开文件并读取数据
  96. if (($fp = fopen($csvfile, "r")) !== false) {
  97. while (($data = fgetcsv($fp, 0, ',')) !== false) {
  98. $stmt->execute($data);
  99. $count++;
  100. }
  101. fclose($fp);
  102. echo "单词表load<br>";
  103. } else {
  104. echo "can not open csv file. ";
  105. }
  106. // 提交更改
  107. $dbh->commit();
  108. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  109. $error = $dbh->errorInfo();
  110. echo "error - $error[2] <br>";
  111. } else {
  112. echo "updata $count recorders.";
  113. }
  114. $dbh = null;
  115. break;
  116. case "part":
  117. $dns = "" . _FILE_DB_PART_;
  118. $dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  119. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  120. //建立数据库
  121. $_sql = file_get_contents('part.sql');
  122. $_arr = explode(';', $_sql);
  123. //执行sql语句
  124. foreach ($_arr as $_value) {
  125. $dbh->query($_value . ';');
  126. }
  127. echo $dns . "建立数据库成功<br>";
  128. // 开始一个事务,关闭自动提交
  129. $dbh->beginTransaction();
  130. $query = "INSERT INTO part ('word','weight') VALUES ( ?, ? )";
  131. $stmt = $dbh->prepare($query);
  132. $count = 0;
  133. // 打开文件并读取数据
  134. if (($fp = fopen(_DIR_DICT_TEXT_ . "/system/part.csv", "r")) !== false) {
  135. while (($data = fgetcsv($fp, 0, ',')) !== false) {
  136. $stmt->execute($data);
  137. $count++;
  138. }
  139. fclose($fp);
  140. echo "part load ";
  141. } else {
  142. echo "can not open csv file. ";
  143. }
  144. // 提交更改
  145. $dbh->commit();
  146. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  147. $error = $dbh->errorInfo();
  148. echo "error - $error[2] <br>";
  149. } else {
  150. echo "updata $count recorders.";
  151. }
  152. $dbh = null;
  153. break;
  154. }