1
Я пытаюсь экспортировать около 20 тыс. Записей из таблицы в mysql в csv, и, как и ожидалось, это сбой моей системы, есть ли альтернатива этому, чтобы избежать сбоев ?экспорт 20k или более записей из MY SQL в CSV с использованием php
вот мой текущий код экспорта:
$filename2 = "csv/leads_".date("M-d-Y",time()).".csv";
$fp2 = fopen($filename2, 'w') or die("can't open file");
$sql2 = $sql_getcustomers;
$res2 = mysql_query($sql2);
// fetch a row and write the column names out to the file
$row2 = mysql_fetch_assoc($res2);
$line = "";
$comma = "";
if($row2){
foreach($row2 as $name => $value) {
$line .= $comma . '"' . str_replace('"', '""', $name) . '"';
$comma = ",";
}
$line .= ",crm_group";
$line .= "\n";
fwrite($fp2, $line);
// remove the result pointer back to the start
mysql_data_seek($res2, 0);
// and loop through the actual data
while($row2 = mysql_fetch_assoc($res2)) {
$line = "";
$comma = "";
foreach($row2 as $index => $value) {
$line .= $comma . '"' . str_replace('"', '""', utf8_decode($value)) . '"';
$comma = ",";
}
//** GET THE CRM GROUPS
$sql_get_group = "SELECT a.crm_group_name, b.* FROM tbl_crm_members b JOIN tbl_crm_groups a ON (a.crm_gid = b.crm_groupid) WHERE crm_uid = ".$row2["uid"];
$sql_get_groups = mysql_query($sql_get_group);
$res_get_groups = "";
while($sgg = mysql_fetch_object($sql_get_groups)) $res_get_groups .= $sgg->crm_group_name.";";
$line .= ",".trim($res_get_groups, ";");
$line .= "\n";
fwrite($fp2, $line);
}
fclose($fp2);
могли бы вы подытожив, что для меня, синтаксис и как он работает. thanks – magicianiam
Он экспортирует выбранные данные в файл с именем result.csv в/tmp/folder (* nix). Блокировка между FIELDS и TERMINATED BY - это конфигурация для форматирования вашего CSV-файла. Подробнее об этом читайте в http://dev.mysql.com/doc/refman/5.1/ru/select-into.html. Я думаю, что нет смысла переписывать его здесь. –
Могу ли я сделать так, чтобы автоматическая загрузка файла? – magicianiam