Yii Framework Forum: Importe Archivo Csv - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Importe Archivo Csv Rate Topic: -----

#1 User is offline   MagnusSolution 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 13-August 12

Posted 05 October 2012 - 01:19 PM

hola, estoy trabajando con mi sistema em YII y EXTJS4

ahora estoy con un GRUD para importar datos de un archivo CSV.

Pero es un archivo con, algunas veces, mas de 20 mil lineas.

Aparte tiene que hacer un INSERT en dos tablas.

public function actionImportFromCsv()
	{
		$values = $this->getAttributesRequest();
		$idTariffplan = $values['id_tariffplan'];
		$idTrunk = $values['id_trunk'];

		$handle = fopen($_FILES['file']['tmp_name'], "r");		
	        while($row = fgetcsv($handle)) {
	    	if(isset($row[1]))
	    	{
	    		$prefix = $row[0];
	    		$destination = $row[1];
	    		$price = $row[2];
	    	
	    		$modelPrefix = CcPrefix::model()->findAll(array('condition' => "prefix = $prefix"));

				if(count($modelPrefix)) {
					$modelPrefix = $modelPrefix[0];
					$modelPrefix->destination = $destination;
				
					try {
						$this->success = $modelPrefix->save();
						$errors = $modelPrefix->getErrors();
					} 
					catch (Exception $e) {
						$this->success = false;
						$errors = $this->getErrorMySql($e);
					}
				}
				else 
				{
					$modelPrefix = new CcPrefix();
					$modelPrefix->prefix = $prefix;
					$modelPrefix->destination = $destination;
				
					try {
						$this->success = $modelPrefix->save();
						$errors = $modelPrefix->getErrors();
					} 
					catch (Exception $e) {
						$this->success = false;
						$errors = $this->getErrorMySql($e);
					}
				}
			
				if(!$this->success) {
					break;
				}
			
				$modelRateCard = new CcRatecard();
				$modelRateCard->dialprefix = $prefix;
				$modelRateCard->rateinitial = $price;
				$modelRateCard->id_prefix = $modelPrefix->primaryKey;
			
				try {
					$this->success = $modelRateCard->save();
					$errors = $modelRateCard->getErrors();
				} 
				catch (Exception $e) {
					$this->success = false;
					$errors = $this->getErrorMySql($e);
				}
			
				if(!$this->success) {
					break;
				}
			}
	    }


Pero esta muy, pero muy lento, hay alguna forma de optimizar esta funciĆ³n?

Saludos
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users