PHP,MySQL - 插入带有标题的 CSV 文件
Posted
技术标签:
【中文标题】PHP,MySQL - 插入带有标题的 CSV 文件【英文标题】:PHP, MySQL - Insert CSV file with header 【发布时间】:2014-11-23 19:24:09 【问题描述】:我有带有标题和数据字段的 CSV 文件。如何通过 SQL 查询插入它并删除标题。目前我编写的代码正在运行,但它将标头作为数据插入到数据库中。
代码:
$files = directory_map('./assets/csv/');
foreach ($files as $file) :
$filefile = './assets/csv/' . $file;
$q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' (personal_name, personal_lastname,
personal_country,personal_address,contact_email,dateadded);";
$this->db->query($q);
endforeach;
【问题讨论】:
【参考方案1】:您可以在加载数据中使用ignore xx lines
子句(关于此的文档)[http://dev.mysql.com/doc/refman/5.1/en/load-data.html] 向下跳过大约三分之一:
$q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' ignore 1 lines (personal_name, personal_lastname,
personal_country,personal_address,contact_email,dateadded);";
这将导致输入跳过 CSV 的 1 行 - 我假设这是您的标题。跳过但是需要多行才能获取数据本身。
【讨论】:
我收到此错误:错误编号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“忽略 1 行”附近使用正确的语法 发现错误 - 忽略需要在 LINES TERMINATED BY '\n' 之后的 1 行。感谢您的帮助:)【参考方案2】:试试这个:希望这对你有用..
$c = 1;
$files = directory_map('./assets/csv/');
foreach ($files as $file) :
if($c==2;) continue;
$filefile = './assets/csv/' . $file;
$q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (personal_name, personal_lastname, personal_country,personal_address,contact_email,dateadded);";
$this->db->query($q);
$c++;
endforeach;
【讨论】:
以上是关于PHP,MySQL - 插入带有标题的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章