Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Как импортировать данные в mysql из txt (dle)

Тема в разделе "Вопросы- ответы", создана пользователем igrovik, 9 июл 2017.

09.07.17 в 23:37
12.07.17 в 16:07
4
787
0
  1. TopicStarter Overlay
    igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    Привет народ и снова я со своими глупыми вопросами:)
    Перейдём к делу есть txt файл в котором есть такие записи:
    "kinopoisk"; "title"; "iframe"
    и к ним идет уже такое :

    "395787"; "Семь жизней"; 'http://test.ru/iframe/d85f719e/
    Вопрос вот в чём можно ли как-то массово загнать эти данные в бд????
    Если да то как??
    p/s kinopoisk и iframe нужно загнать в доп поля.
    Или все таки делать это ручками и только ними?????
    Заранее спасибо за ответ и за терпение к моим вопросам:)

    p/p/s Мож у кого какая программка завалялась?Выручите плиз.

    В инете нарыл такой
    Код:
    [LIST=1]
    [*]<?php
    [*]$handle = fopen('test.txt', 'r');
    [*]$i=0;
    [*]while (!feof($handle)) {
    [*]    $tmp = str_replace("\r\n",'',fgets($handle, 4096));
    [*]    if(!empty($tmp)){
    [*]        $file_array[$i++] = $tmp;
    [*]        if($i==3){
    [*]            mysql_query('INSERT INTO `users` (`login`,`password`,`mail`) VALUES ("'.mysql_real_escape_string($file_array[0]).'",
    [*]                                                                                "'.mysql_real_escape_string($file_array[1]).'",
    [*]                                                                                "'.mysql_real_escape_string($file_array[2]).'")');
    [*]            $i=0;
    [*]        }
    [*]    }
    [*]}
    [*]fclose($handle);
    [*]?>
    [/LIST]
    
    и такой коды

    Код:
    <?php
    /*
    *
    *  Name   : CSV->MySQL Importer
    *  Ver    : 2.2
    *  Author : Dmitriy Ilichev
    *  WebSite: https://dmitriyilichev.com/
    *
    */
    
    setlocale (LC_ALL, 'nl_NL'); // Преобразуем каракули в кириллицу
    
    /*
    *
    *  Настройки
    *
    */
    
    $options = array(
       'enable'        => true, // Скрипт работает только если значение TRUE
       /* Настройки CSV */
       'filename'      => 'import.csv', // Имя файла CSV. Находиться должен в одной папке со скриптом
       'delimiter'     => ';', // Какой разделитель используется
       /* Настройки подключения к БД */
       'db_server'     => 'localhost', // Сервер БД
       'db_user'       => 'root', // Имя пользователя
       'db_password'   => '', // Пароль
       'db_base'       => 'data' // Имя базы данных
    
       );
    
    if(!$options['enable']) die('Скрипт отключен, дальнейшая обработка данных невозможна!');
    
    /*
    *
    *  Функции скрипта
    *
    */
    
    // Основная функция, из импортируемого файла выбираем данные в массив
    // !Во время первой итерации значения первой строки будут являться ключами ассоциативного массива!
    
    function csv_to_array($filename='') {
       if(!file_exists($filename) || !is_readable($filename)){
           return FALSE;
       }
       global $options;
       $header = NULL;
       $data = array();
       if (($handle = fopen($filename, 'r')) !== FALSE) {
           while (($row = fgetcsv($handle, 1000, $options['delimiter'])) !== FALSE) {
               if(!$header)
                   $header = $row;
               else
                   $data[] = array_combine($header, $row);
           }
           fclose($handle);
       }
       return $data;
    }
    
    // Используется, если необходимо убрать ВСЕ (!!!) пробелы из строки
    // Например цена в виде Х ХХХ, а в базе нужно ХХХХ
    
    function space_off($str) {
       if(!empty($str)) {
           return str_replace(" ", "", $str);
       }
       else {
           return FALSE;
       }
    }
    
    // Просто функция транслитизации, Заменяем кириллицу латиницей, вместо пробела ставим нижнее подчеркивание
    // Удобно, если необходимо из названия сделать URL
    
    function translit($str) {
       $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
       $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya', '_');
       return str_replace($rus, $lat, $str);
    }
    
    /*
    *
    *  / Функции скрипта
    *
    *  Подключаемся к Базе Данных
    *
    */
    
    $link = mysql_connect($options['db_server'], $options['db_user'], $options['db_password']);
    if (!$link) {
       die('Ошибка соединения: ' . mysql_error());
    }
    
    // Указываем, что общаемся с БД только в UTF-8
    
    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET 'utf8'");
    mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");
    
    // Выбираем интересующую нас Базу
    
    $db_selected = mysql_select_db($options['db_base'], $link);
    if (!$db_selected) {
       die ('Не удалось выбрать базу db_data: ' . mysql_error());
    }
    
    // Отключаем индексацию таблицы, для максимального быстродействия
    
    mysql_query("ALTER TABLE `".$options['db_base']."` DISABLE KEYS");
    
    foreach (csv_to_array($options['filename']) as $val) {
    
       // Тут собственно делаем запросы в соответствии с задачей
    
    }
    
    // Включаем индексацию таблицы
    
    mysql_query("ALTER TABLE `".$options['db_base']."` ENABLE KEYS");
    
    // Закрываем соединение с БД
    
    mysql_close($link);
    
    ?>
    
    
    Но как их прикрутить к Dle?
     
  2. iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    390
    Лучших ответов:
    6
    Рейтинги:
    +318 / 12 / -0
    Да, это проблема)) Но вообще-то запись можно сделать можно и напрямую... Подсказка: учи mysql :)
     
  3. TopicStarter Overlay
    igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    iCooLER Спасибо за совет.
     
  4. TopicStarter Overlay
    igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    Ну что я могу сделать если при нашей власти пороха, увы ели концы с концами свожу. Лан прошу модеров закрыть тему. Буду искать иное решение.Извините за отнятое время ребята, спасибо за ответы.
     
  5. TopicStarter Overlay
    igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    Приветствую всех, итак хотел был от всей души поблагодарить iCooLER за помощь с решением данной проблемы. Ребята советую человека, человек с ответственностью подходит к задаче, в кратчайшие сроки делает работу. А так же приятный в общении человек.Так что кому что нужно сделать обращайтесь к iCooLER а от меня еще раз огромное спасибо.
     
    • Нравится Нравится x 2
Яндекс.Метрика