我有一个包含三列移动号码,公司名称和状态的文件,有数百万条记录。我已经从文件中读取数据并将各列中的数据存储在各自的数组中。我会使用loadInfile mysql但是问题是我想存储的公司名称而不是存储在我的mysql表中的company_ids。所以基本上我想做的是用他们的company_ids替换公司名称,但问题是简单的选择语句需要花费很多时间,因为记录是以百万计。建议我一个可行的方法thankx.just为了理解我在下面给出一个代码
$company_names_arr=array('ABC','Def','Ghi',.......);
foreach($company_names_arr as $arr)
{
$this->db->select('company_id');
$this->db->from('companies_info');
$this->db->where('company_name',$arr);
$q=$this->db->get();
$res=$q->result();
$company_ids_arr[]=$res;
}
我知道上面编写的代码不是一种可行的方法来实现我想要实现的目标所以请建议我一个更好的方法thankx
答案 0 :(得分:0)
忘记逐行插入这么多数据,因为你已经发现它会非常慢。
使用load data infile
将文本文件原样加载到临时表。登台表应该在公司名称列上有一个索引。然后使用insert ... select ...和联接将公司ID插入到最终表中。