尝试通过LOAD DATA LOCAL INFILE将CSV插入表格。它不显示错误,但表为空(CSV不为空)。有一个解决方法做foreaches和手动插入,但它比LOAD DATA INFILE慢得多。
有什么建议吗?
$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);
答案 0 :(得分:0)
或者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);
答案 1 :(得分:-1)
我通过手动连接到数据库来解决它。由于某些原因,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.');
然后:
$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;
mysql_query($query);
完美无缺。