【发布时间】:2015-12-16 21:59:51
【问题描述】:
我正在尝试通过 csv 文件批量上传。我的 csv 文件位于 webroot/CSV/data.csv。数据如下:
name,email
santo, abc@gmail.com
我的代码:
$sql = "LOAD DATA INFILE '$filepath'
INTO TABLE customers
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY ',,,\\r\\n'
IGNORE 1 LINES
(name, email)";
$this->Customer->query($sql);
这里
$filepath = WWW_ROOT . 'CSV' . DS.'data.csv';
得到错误:
C:\server\mysql\data\serverhtdocsdemo-home25appwebrootCSVdata.csv' not found (Errcode: 2 "No such file or directory")
我检查了它存在的文件,并且 sql 中的文件位置似乎没问题:
SQL Query: LOAD DATA INFILE 'C:\server\htdocs\demo-home25\app\webroot\CSV\data.csv' INTO TABLE customers FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ',,,\r\n' IGNORE 1 LINES (name, email)
我的代码有什么问题?
【问题讨论】:
-
你确定你已经定义了
DS,它不是PHP定义的值,你必须自己设置。您还需要在WWW_ROOT . 'CSV'之间有一个DS,即WWW_ROOT . DS . 'CSV',一旦您实际定义了它。我建议在 DS 中也使用 unix 正斜杠而不是 DOS 反斜杠。 -
$sql 之前的 $filepath 变量的确切内容是什么?
-
按照我的解释,我将 csv 文件的路径设置为 $filepath 变量,即: $filepath = WWW_ROOT 。 'CSV' 。 DS.'data.csv'; @Rydrych
-
WWW_ROOT 据我所知自动添加斜杠。我也检查一下。 RiggsFolly