Magento – Leer archivo csv e insertar en una tabla por SQL.

Inicio MagentoMagento – Leer archivo csv e insertar en una tabla por SQL.
mage+php

Magento – Leer archivo csv e insertar en una tabla por SQL.

No Comments

Magento – Leer archivo csv e insertar en una tabla por SQL.

Es posible que en alguna ocasión hayas tenido la necesidad de incorporar información desde una fuente de datos externa a Magento pero que esta acción sea un duro trabajo debido al volumen de la misma. Te presentamos una solución que te hará más fácil este propósito: incorporar información desde un archivo .csv directamente a una tabla de Magento por SQL!

Utilizar sentencias de SQL agilizará el tiempo de ejecución de esta tarea, evitando problemas de ejecución en servidores bajo rendimiento.

 /**
 * Leer archivo csv e insertar en una tabla por SQL.
 */
 public function uploadCSVFile()
 {
 
    //*** Definición Adapter   
    $adapter = Mage::getModel('core/resource')->getConnection('core_write');
 
    //*** Commit transacciones existentes (utilizar con precaución!)
    if ($adapter->getTransactionLevel > 0) {
	$adapter->commit();
    }
 
    //*** Definir Nivel de aislamiento: en el ejemplo se pueden leer los registros tras un commit!
    $adapter->query('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
    $adapter->beginTransaction();
    try {
 
       $tablename = $this->_getTableName('your_table_name');
 
       //*** Truncate table - Vaciamos tabla! 
       $sqlquery_truncate = 'TRUNCATE TABLE '.$tablenameto;
       $adapter->query($sqlquery_truncate);
       $adapter->commit();
 
 
        //*** Informar ruta fichero csv. En el ejemplo, está subido al servidor!
        $fileToImp = '';
        $fileToImp = Mage::getBaseDir('base').'/your_folder/your_file_name.csv';
 
 
        //*** Importación archivo CSV. En el ejemplo importamos 3 columnas!
        $row = 1; 
        $separatorChar = ',';
	$fp = fopen ($fileToImp,"r");  
 
 
        while ($data = fgetcsv ($fp, 1000, $separatorChar))  
        {  
 
	//*** Comprobaciones. En el ejemplo la columna 1 no puede estar vacía.
	if ($data[0] == ''){
	    //*** Error!
            throw new Exception('First column is empty!. No valid record number %d: ',$row);
 
	}else{
	   $num = count ($data);
	   $sqlquery_insert = 'INSERT INTO '.$tablenameto;
	   $sqlquery_insert .= ' (column1,column1,column1) VALUES (';
	   $sqlquery_insert .= '\''.$data[0].'\''.','.'\''.$data[1].'\''.','.'\''.$data[2].'\''.')';	
 
           $adapter->query($sqlquery_insert );
	   $adapter->commit();
 
	}
	$row++;
     }  
 
     fclose ($fp); 
 
     //*** Unset Variables
     unset($adapter);
 
 
     } catch (Exception $e) {
        // Rollback si tenemos una excepción!
	$adapter->rollBack();
        var_dump($e->getMessage());
     }
 }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *