20211202084900_init_pali_serieses.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /*
  3. 导入巴利书名
  4. */
  5. require_once __DIR__."/../../app/path.php";
  6. $src_file=_DIR_PALI_TITLE_."/pali_serieses.csv";#源数据
  7. $dest_db=_FILE_DB_PALITEXT_;#目标数据库
  8. $dest_table=_TABLE_PALI_BOOK_NAME_;#目标表名
  9. echo "migarate pali_serieses".PHP_EOL;
  10. #打开源
  11. if (($fp = fopen($src_file, "r")) === FALSE) {
  12. echo "open $src_file fail".PHP_EOL;
  13. exit;
  14. }
  15. echo "open src".PHP_EOL;
  16. #打开目标数据库
  17. $PDO_DEST = new PDO($dest_db,_DB_USERNAME_,_DB_PASSWORD_,array(PDO::ATTR_PERSISTENT=>true));
  18. $PDO_DEST->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  19. echo "open dest".PHP_EOL;
  20. #删除目标表中所有数据
  21. $query = "DELETE FROM ".$dest_table." WHERE true";
  22. $stmt = $PDO_DEST->prepare($query);
  23. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  24. $error = $PDO_DEST->errorInfo();
  25. echo "error - $error[2] ";
  26. exit;
  27. }
  28. $stmt->execute();
  29. echo "delete dest".PHP_EOL;
  30. // 开始一个事务,关闭自动提交
  31. $count = 0;
  32. echo "begin Transaction".PHP_EOL;
  33. $PDO_DEST->beginTransaction();
  34. $query = "INSERT INTO ".$dest_table." (id, book , paragraph , title ) VALUES ( ? , ? , ? , ? )";
  35. $stmtDEST = $PDO_DEST->prepare($query);
  36. #从源数据表中读取
  37. $row=0;
  38. while (($data = fgetcsv($fp, 0, ',')) !== false){
  39. if($row>0){
  40. #插入目标表
  41. $stmtDEST->execute(array(
  42. (int)$data[0],
  43. (int)$data[1],
  44. (int)$data[2],
  45. $data[3],
  46. ));
  47. if (!$stmtDEST || ($stmtDEST && $stmtDEST->errorCode() != 0)) {
  48. $error = $PDO_DEST->errorInfo();
  49. echo "error - $error[2] ";
  50. exit;
  51. }
  52. }
  53. $row++;
  54. }
  55. fclose($fp);
  56. // 提交更改
  57. $PDO_DEST->commit();
  58. echo "done".PHP_EOL;