【发布时间】:2014-02-18 23:34:16
【问题描述】:
此代码仅适用于包含大约 1K 记录的 csv 文件。但是,如果我尝试插入 100K 的文件,它就会挂起。 我在网上搜索了很多建议,比如调整 php 执行超时,增加分配给 php 的内存(这有点帮助),但是我需要导入像 100 万条记录这样的大数据文件。
我正在使用 codeigniter。 有没有办法加快这个过程: 关于此功能的说明: - 第一个“INSERT INTO”将登录的客户端(admin_id)和创建时间(create_time)插入到table="client"中。
-第二个“INSERT INTO”将attribute_id、client_id和value插入到table="client_attribute_value"中。
function Add_multiple_users($values)
{
$err = '';
foreach($values as $rows)
{
$clientQuery = 'INSERT INTO
client
(
admin_id,
create_time
)
VALUES
(
"'.$this -> session -> userdata('user_id').'",
"'.date('Y-m-d H:i:s').'"
)';
$clientResult = @$this -> db -> query($clientQuery);
if($clientResult)
{
$client_id = $this -> db -> insert_id();
foreach($rows as $row)
{
$attrQuery = 'INSERT INTO
client_attribute_value
(
attribute_id,
client_id,
value
)
VALUES
(
"'.$row['attribute_id'].'",
"'.$client_id.'",
"'.addslashes(trim($row['value'])).'"
)';
$attrResult = @$this -> db -> query($attrQuery);
if(!$attrResult)
{
$err .= '<p class="box error">Could not add attribute for<br>
Attribute ID: '.$row['attribute_id'].'<br>
Client ID: '.$client_id.'<br>
Attribute Value: '.trim($row['value']).'</p>';
}
}
}
}
return $err;
}
【问题讨论】:
标签: php mysql codeigniter