示例#1
0
 /**
  * @param string $datasource    A datasource name.
  */
 public function insertSql($datasource = null)
 {
     $statementsToInsert = array();
     foreach ($this->getProperties($this->getSqlDbMapFilename()) as $sqlFile => $database) {
         if (null !== $datasource && $database !== $datasource) {
             // skip
             break;
         }
         if (!isset($statementsToInsert[$database])) {
             $statementsToInsert[$database] = array();
         }
         if (null === $database || null !== $database && $database === $datasource) {
             $filename = $this->getWorkingDirectory() . DIRECTORY_SEPARATOR . $sqlFile;
             if (file_exists($filename)) {
                 foreach (SqlParser::parseFile($filename) as $sql) {
                     $statementsToInsert[$database][] = $sql;
                 }
             }
         }
     }
     foreach ($statementsToInsert as $database => $sqls) {
         if (!$this->hasConnection($database)) {
             continue;
         }
         $pdo = $this->getPdoConnection($database);
         $pdo->beginTransaction();
         try {
             foreach ($sqls as $sql) {
                 $stmt = $pdo->prepare($sql);
                 $stmt->execute();
             }
             $pdo->commit();
         } catch (PDOException $e) {
             $pdo->rollback();
             throw $e;
         }
     }
     return true;
 }