Exemplo n.º 1
0
 public function run()
 {
     $offset = 0;
     // skip header
     while (1) {
         $batchRows = $this->reader->setOffset($offset)->setLimit($this->batchSize)->fetchAssoc();
         // read till returned iterator is empty
         $batchRows->rewind();
         if (!$batchRows->valid()) {
             break;
         }
         $itemsBatch = new DataApi\Batch\EntitiesBatch();
         foreach ($batchRows as $row) {
             // process row - remove id column etc.
             $itemsBatch->addEntity($row['title'], $row);
             //var_dump($row);
         }
         $this->client->insertOrUpdateItems($itemsBatch);
         $offset += $this->batchSize;
     }
 }
Exemplo n.º 2
0
 /**
  * upload all data to recommeder
  * 
  */
 public function upload(DataApi\Client $client)
 {
     if (!is_null($this->filePath)) {
         $batchSize = 5000;
         $csvFile = new CsvFile($this->filePath);
         $csvFile->rewind();
         if (!$csvFile->valid()) {
             break;
         }
         $header = $csvFile->current();
         $csvFile->next();
         $itemsBatch = new DataApi\Batch\EntitiesBatch();
         $batchRowsCount = 0;
         while ($csvFile->valid()) {
             $attributes = array_combine($header, $csvFile->current());
             $csvFile->next();
             // process row - remove id column etc.
             $pk = $this->manifest->getPrimaryKey()[0];
             $id = $attributes[$pk];
             unset($attributes[$pk]);
             $itemsBatch->addEntity($id, $attributes);
             $batchRowsCount += 1;
             if ($batchRowsCount == $batchSize || !$csvFile->valid()) {
                 $client->insertOrUpdateItems($itemsBatch);
                 $itemsBatch = new DataApi\Batch\EntitiesBatch();
                 $batchRowsCount = 0;
             }
         }
     }
     return $this;
 }
 /**
  * @param EntitiesBatch $entities
  * @return NULL
  * @throws RequestFailedException when request failed for some reason
  */
 public function insertOrUpdateEntities(EntitiesBatch $entities)
 {
     $restriction = new Restriction([], [self::ENTITIES_PARAMETER => $entities->getEntities()]);
     return $this->performPost($this->strategy->getInsertOrUpdateEntityUrl(), $restriction);
 }