Magento:加载数据本地填充不工作
尝试通过加载数据本地填充将CSV插入到表中。它不显示错误,但表为空。CSV不为空。进行foreaches和手动插入有一个变通方法,但与加载数据填充相比,它要慢得多 有什么建议吗Magento:加载数据本地填充不工作,magento,Magento,尝试通过加载数据本地填充将CSV插入到表中。它不显示错误,但表为空。CSV不为空。进行foreaches和手动插入有一个变通方法,但与加载数据填充相比,它要慢得多 有什么建议吗 $resource = Mage::getSingleton('core/resource'); $write = $resource->getConnection('core_write'); $filename = Mage::getBaseDir()."/var/mdb_processed/parts.cs
$resource = Mage::getSingleton('core/resource');
$write = $resource->getConnection('core_write');
$filename = Mage::getBaseDir()."/var/mdb_processed/parts.csv";
$query = <<<eof
LOAD DATA LOCAL INFILE '$filename'
INTO TABLE ppi_parts
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' lines terminated by '\n'
ignore 1 lines
(partID,sku,isFreight,quantity,price,lastCost,vwCode,shortDesc,longDesc,headline,consumerDesc,salesMessage,relatedProd1,relatedProd2,weight,oversized,corePrice,titleMetaDescription,metaKeywords,fits,notes,seoField,location)
eof;
$write->query($query);
我通过手动连接到数据库解决了这个问题。Varien DB对象由于某种原因无法工作 要创建手动连接,我必须执行以下操作:
$local = simplexml_load_file( Mage::getBaseDir()."/app/etc/local.xml");
$connection = $local->global->resources->default_setup->connection;
$filename = Mage::getBaseDir()."/var/mdb_processed/parts.csv";
$link = mysql_connect($connection->host,$connection->username,$connection->password);
mysql_select_db($connection->dbname, $link) or die('Could not select database.');
然后:
工作正常。或此版本的PDO:
$options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => true);
$local = simplexml_load_file(Mage::getBaseDir() . "/app/etc/local.xml");
$connection = $local->global->resources->default_setup->connection;
$pdoDb = new PDO(
"mysql:host={$connection->host};dbname={$connection->dbname}",
$connection->username,
$connection->password,
$options
);
$path_to_datafile = Mage::getBaseDir()."/var/mdb_processed/parts.csv";
$sql = "LOAD DATA LOCAL INFILE '{$path_to_datafile}'
REPLACE INTO TABLE ppi_parts
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
IGNORE 1 LINES;";
$result = $pdoDb()->exec($sql);
$options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => true);
$local = simplexml_load_file(Mage::getBaseDir() . "/app/etc/local.xml");
$connection = $local->global->resources->default_setup->connection;
$pdoDb = new PDO(
"mysql:host={$connection->host};dbname={$connection->dbname}",
$connection->username,
$connection->password,
$options
);
$path_to_datafile = Mage::getBaseDir()."/var/mdb_processed/parts.csv";
$sql = "LOAD DATA LOCAL INFILE '{$path_to_datafile}'
REPLACE INTO TABLE ppi_parts
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
IGNORE 1 LINES;";
$result = $pdoDb()->exec($sql);