|
|
|
| Приветствую друзья.
есть таблица в бд, состоит из 5 колонок, все текстовые.
задача из csv файла загружать в эту базу,
как реализовать что бы при загрузке выводил ошибку на файл txt средставми php | |
|
|
|
|
|
|
|
для: ru_spaik
(27.05.2017 в 10:53)
| | А если нет ошибки? Загружать не надо?
Записать в файл просто - открыть, записать, закрыть.
Я делала запись содержимого файла в базу и при очень больших объемах. Но ошибки не
записывала, а выводила на экран. Надо?
$file_name = $_GET['path']; /// имя файла брала из URL
$csvFile = $file_name;
$table = str_replace(".csv", "", $csvFile); /// имя таблицы = имя файла без раширения
///создаем таблицу, если ее нет
$sql_create = "CREATE TABLE IF NOT EXISTS `".$table."` (`pole_1` varchar(20) NOT NULL, `pole_2` varchar(10) NOT NULL, PRIMARY KEY (`pole_2`)) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$result = mysqli_query($g_link,$sql_create) or die($sql_create." ".mysqli_error($g_link));
if (($handle_f = fopen($file_name, "r")) !== FALSE) {
// проверяется, надо ли продолжать импорт с определенного места
// если да, то указатель перемещается на это место
if(isset($_GET['ftell'])){
fseek($handle_f,$_GET['ftell']);
}
$i=0;
if(isset($_GET['x'])){
$x=$_GET['x'];
} else {
$x = 0;
}
// построчное считывание и анализ строк из файла
while ( ($data_f = fgetcsv($handle_f, 1000, ","))!== FALSE) {
$data_str = explode(";", $data_f[0]);
$sqlquery = "INSERT IGNORE INTO `".$table."` (`PolicyEnd`, `phone`) ";
$sqlquery .= ' VALUES ("'.$data_str[0].'", "'.$phone.'") ';
$result_ins = @mysqli_query($g_link, $sqlquery); /// or die($sqlquery." ".mysqli_error($g_link));
if(!strstr($i/5000,'.')){
print 'Importing record #: '.$x.'<br />';
flush();
ob_flush();
}
if($i==20000){
print '<meta http-equiv="Refresh" content="0; url='.$_SERVER['PHP_SELF'].'?x='.$x.'&ftell='.ftell($handle_f).'&path='.$_GET['path'].'">';
exit;
}
$x++;
$i++;
}
fclose($handle_f);
} else {$err = 1; echo "Cannot open file!";}
|
| |
|
|
|
|
|
|
|
для: elenaki
(27.05.2017 в 13:10)
| | Не советуйте такого никому. | |
|
|
|