Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как из текстового файла перенести данные в базу данных?
 
 автор: maxim14   (31.03.2011 в 19:53)   письмо автору
686.4 Кб
 
 

Как из текстового файла перенести данные в базу данных если данные разделены знаком табуляции?

  Ответить  
 
 автор: cheops   (31.03.2011 в 20:57)   письмо автору
 
   для: maxim14   (31.03.2011 в 19:53)
 

Можно начать отталкиваться от следующего скрипта
<?php
  $arr = file("text.txt");
  $sql = array();
  for($i = 0; $i < count($arr); $i++)
  {
    $arr[$i] = trim($arr[$i]);
    $line = explode("\t", $arr[$i]);
    $sql[] = "('{$line[0]}',
               '{$line[1]}',
               '{$line[2]}',
               '{$line[3]}',
               '{$line[4]}',
               '{$line[5]}')";
  }
  if(!empty($sql))
  {
    // Формируем SQL-запрос
    $query = "INSERT INTO tbl VALUES ".implode(", ", $sql);
    // ...
  }
?>

  Ответить  
 
 автор: maxim14   (01.04.2011 в 07:07)   письмо автору
 
   для: cheops   (31.03.2011 в 20:57)
 

<?php
  $arr = file("text.txt"); // тут помещаем текст в переменную
  $sql = array();  // не понял
  for($i = 0; $i < count($arr); $i++) // счетчик
  {
    $arr[$i] = trim($arr[$i]);
    $line = explode("\t", $arr[$i]); // здесь в переменную line в виде массива заносим текст
    $sql[] = "('{$line[0]}',
               '{$line[1]}',
               '{$line[2]}',
               '{$line[3]}',
               '{$line[4]}',
               '{$line[5]}')"; // переменной sql передаем массив line. Я так думаю что тут нужно добавить перенос на следующую строку
  }
  if(!empty($sql))
  {
    // Формируем SQL-запрос
    $query = "INSERT INTO tbl VALUES ".implode(", ", $sql); // с этим вообще завал
    // ...
  }
?> 


Посмотрите правильно ли?

  Ответить  
 
 автор: Qiyomiddin   (01.04.2011 в 09:06)   письмо автору
 
   для: maxim14   (01.04.2011 в 07:07)
 

в этом кад на какой програма написаем

  Ответить  
 
 автор: cheops   (01.04.2011 в 11:07)   письмо автору
 
   для: maxim14   (01.04.2011 в 07:07)
 

>$sql = array(); // не понял
Объявляем массив для хранения строк в многострочном запросе

// переменной sql передаем массив line. Я так думаю что тут нужно добавить перенос на
//следующую строку
Нет, мы заполняем элементы массива $sql. Выполните следующий код, чтобы посмотреть структуру массива
<?php
  echo "<pre>";
  print_r($sql);
  echo "</pre>";
?>

>$query = "INSERT INTO tbl VALUES ".implode(", ", $sql); // с этим вообще завал
Здесь мы формируем многострочный INSERT-запрос, который имеет одно ключевое слово INSERT и множество круглых скобок, которые позволяют вставить множество записей за один раз.

  Ответить  
 
 автор: maxim14   (01.04.2011 в 12:56)   письмо автору
 
   для: cheops   (01.04.2011 в 11:07)
 


<?php
  echo "<pre>";
  print_r($sql);
  echo "</pre>";
?> 


С этим выводит весь массив. Буду пробовать занести это в базу данных

  Ответить  
 
 автор: maxim14   (01.04.2011 в 12:35)   письмо автору
 
   для: maxim14   (01.04.2011 в 07:07)
 


<?

$arr = file("товары без цены.txt");
  $sql = array();
   
  for($i = 0; $i < count($arr); $i++)
  {
    $arr[$i] = trim($arr[$i]);
    $line = explode("\t", $arr[$i]);
  
    $sql[] = "('{$line[0]}',
               '{$line[1]}',
               '{$line[2]}',
               '{$line[3]}',
               '{$line[4]}',
               '{$line[5]}',
               '{$line[6]}',
               )";
     }
                
              echo "<pre>";
  print_r($sql);
  echo "</pre>"; 

 
  
   
  if(!empty($sql))
  {
    // Формируем SQL-запрос
    $query = "INSERT INTO apteka_towar (id, code, name, fas, doza, made, made_country) VALUES ".implode(", ", $sql);
    // ...
  }
 
?> 





Ну не хочет он заносить данные в базу, а на экран выдает правильно

  Ответить