db_insert_wordindex_from_csv_cli.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /*
  3. 生成 巴利原文段落表
  4. */
  5. require_once __DIR__."/../config.php";
  6. require_once __DIR__.'/../public/_pdo.php';
  7. echo "Insert Word Index To DB".PHP_EOL;
  8. $dirLog = _DIR_LOG_ . "/";
  9. $log = "";
  10. //PostgreSQL
  11. define("_DB_WORD_INDEX_", _DB_ENGIN_.":host="._DB_HOST_.";port="._DB_PORT_.";dbname="._DB_NAME_.";user="._DB_USERNAME_.";password="._DB_PASSWORD_.";");
  12. define("_TABLE_", "word_indexs");
  13. $dns = _DB_WORD_INDEX_;
  14. $dbh_word_index = new PDO($dns, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  15. $dbh_word_index->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  16. #删除
  17. try{
  18. $query = "DELETE FROM "._TABLE_;
  19. $stmt = $dbh_word_index->prepare($query);
  20. $stmt->execute();
  21. }catch(PDOException $e){
  22. fwrite(STDERR,$e->getMessage());
  23. exit;
  24. }
  25. $scan = scandir(_DIR_CSV_PALI_CANON_WORD_INDEX_);
  26. foreach($scan as $filename) {
  27. $filename = _DIR_CSV_PALI_CANON_WORD_INDEX_."/".$filename;
  28. if (is_file($filename)) {
  29. echo "doing ".$filename.PHP_EOL;
  30. if (($fpoutput = fopen($filename, "r")) !== false) {
  31. // 开始一个事务,关闭自动提交
  32. $dbh_word_index->beginTransaction();
  33. $query = "INSERT INTO "._TABLE_." (id , word , word_en , count , normal , bold , is_base , len )
  34. VALUES ( ?, ?, ?, ?, ?, ?, ?, ?)";
  35. try{
  36. $stmt = $dbh_word_index->prepare($query);
  37. }catch(PDOException $e){
  38. fwrite(STDERR,"error:".$e->getMessage()." At Line: ".$e->getLine().PHP_EOL);
  39. exit;
  40. }
  41. $count = 0;
  42. while (($data = fgetcsv($fpoutput, 0, ',')) !== false) {
  43. try{
  44. $stmt->execute($data);
  45. }catch(PDOException $e){
  46. fwrite(STDERR,"error:".$e->getMessage()." At Line: ".$e->getLine().PHP_EOL);
  47. fwrite(STDERR,"error-data:".implode(",",$data).PHP_EOL);
  48. exit;
  49. }
  50. $count++;
  51. }
  52. // 提交更改
  53. $dbh_word_index->commit();
  54. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  55. $error = $dbh_word_index->errorInfo();
  56. echo "error - $error[2]".PHP_EOL;
  57. $log .= "$filename, error, $error[2] \r\n";
  58. } else {
  59. echo "updata $count recorders.".PHP_EOL;
  60. $log .= "updata $count recorders.\r\n";
  61. }
  62. }else{
  63. echo "open file error".PHP_EOL;
  64. }
  65. }
  66. }
  67. echo "齐活!功德无量!all done!".PHP_EOL;
  68. ?>