我正在从 csv 导入数据,我需要添加行的ID并将该ID插入新表 pesonInfo 。查询具有 IGNORE ,以便不重复条目。我有办法完成这项任务吗?
代码:
$files = directory_map('./assets/csv/');
foreach ($files as $file) :
$csv = './assets/csv/' . $file;
$q = "LOAD DATA LOCAL INFILE '$csv'
IGNORE INTO TABLE person FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(personal_name, personal_lastname,personal_country, personal_address,contact_email,dateadded);";
$this->db->query($q);
unlink($csv);
endforeach;
答案 0 :(得分:0)
我看到它的方式,你需要为此再运行2个查询。
第一个查询应该在“LOAD DATA”查询之前运行,类似
$q = $this->db->query("SELECT MAX(id) max_id FROM person")->row();
$max_id = $q->max_id;
在文件中加载数据以获取ID后,您将运行的第二个查询
$q = $this->db->where('id >', $max_id)->get('person');
$result = $q->result();
现在你可以foreach $ result获取行的id,你可以将它存储在一个数组中供以后使用,或者做你想做的任何事情。