Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка csv файла в базу данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kikosik666
Отправлено: 09 Июля, 2017 - 18:47:10
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Здравствуйте, у меня такая проблема. Есть у меня csv файл, размер которого 70 мб и там 50000 строк.
Нашел код для автоматической загрузки csv в таблицу в базе. После некоторых изменений код начал работать, но оно загружает примерно 60 строк из 50000, и больше не загружает. Пробовал все но не смог решить эту проблему.

Кто не будь сможет мне в этом помочь? Я навичок

Вот код

<?php
error_reporting(0); // Выключаем показ ошибок. Чтобы их видеть - вместо 0 поставьте E_ALL
include('db_conn.php');
$max_file_size = 70; // Максимальный размер файла в МегаБайтах
if($_POST['update']=='OK'){
// СТАРТ Загрузка файла на сервер
if($_FILES["filename"]["size"] > $max_file_size*1024*1024){
echo 'Размер файла превышает '.$max_file_size.' Мб!';
include('form_file_load.php');
exit;
}
if(copy($_FILES["filename"]["tmp_name"],$path.$_FILES["filename"]["name"])){
echo("Добавление "."<b>".$_FILES["filename"]["name"]."</b>"." завершена!<br />");
}
else{
echo 'Սխալ է տեղի ունեցել<br>';
include('form_file_load.php');
exit;
}


$file = fopen('php://memory', 'w+');
fwrite($file, iconv('UTF-8', 'UTF-8', file_get_contents($_FILES["filename"]["name"])));
rewind($file);

$r = 1;
while (($row = fgetcsv($file, 1000, "|")) != FALSE) {
$r++;
if($r == 1) {continue;} // Не дает записать в БД Заголовки Прайс-листа
$ins="INSERT INTO `table1` (`PLAYER`,`PICTURE`,`RUSMETA`,`ENGTITLE`,`ENGDESCRIPTION`,`GENRE`
)VALUES('$row[0]','$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]')";
$query = mysql_query($ins);
if(!$query) die('Սխալ!!!');
}
fclose($file);
echo 'Добавлен - '.$r;
header('Location: index.php');

}
else{
include('form_file_load.php');
}
?>
 
 Top
andrewkard
Отправлено: 09 Июля, 2017 - 20:57:17
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Вы проводите лишние операции, файл прилетает в $_FILES, вот с ним и работайте
PHP:
скопировать код в буфер обмена
  1.  
  2.     foreach($_FILES as $name => $file){
  3.         if(!empty($file['tmp_name'])){
  4.             if (($handle = fopen($file['tmp_name'], "r")) !== FALSE) {
  5.                 while (($data = fgetcsv($handle, 5000, ",")) !== FALSE) {
  6.                
  7.                 //Обработка
  8.  
  9.                 }
  10.              }
  11.          }
  12.      }
  13.  
  14.  
  15.  
 
 Top
kikosik666
Отправлено: 09 Июля, 2017 - 21:15:54
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




andrewkard пишет:
Вы проводите лишние операции, файл прилетает в $_FILES, вот с ним и работайте
PHP:
скопировать код в буфер обмена
  1.  
  2.     foreach($_FILES as $name => $file){
  3.         if(!empty($file['tmp_name'])){
  4.             if (($handle = fopen($file['tmp_name'], "r")) !== FALSE) {
  5.                 while (($data = fgetcsv($handle, 5000, ",")) !== FALSE) {
  6.                
  7.                 //Обработка
  8.  
  9.                 }
  10.              }
  11.          }
  12.      }
  13.  
  14.  
  15.  


fgetcsv($handle, 5000, ","

5000 что означает?
 
 Top
andrewkard
Отправлено: 09 Июля, 2017 - 21:35:42
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Цитата:

array fgetcsv ( resource handle [, int length [, string delimiter [, string enclosure]]] )

length (Необязательный)

Должен быть больше самой длинной строки (в символах), найденной в CSV-файле (включая завершающий символ конца строки). Он стал необязательным в PHP 5. Если этот аргумент не указан (или равен 0 в версиях PHP 5.0.4 и выше), максимальная длинна строки не ограничена, но функция работает немного медленнее.
 
 Top
kikosik666
Отправлено: 09 Июля, 2017 - 21:53:27
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Спасибо поличилось
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB