Из txt в БД

Тема в разделе "PHP", создана пользователем Ozz99, 20 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    Имеем файл с именем fail.txt Структура такая
    Нужен скрипт который загонит всё это хозяйство в БД в таблицу под именем tablica в поле под именем pole с ид от 1234 по id 5678 (параметр настраиваемый.) и перезапишет там все данные, на данные из файла. Кому не жалко потратить нескольк минут и выложить, буду благодарен. Либо пишите в личку я готов купить за умеренную плату.
     
  2. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    781
    Симпатии:
    153
    Тип БД какой?
     
  3. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    Тип MySQL

    Вот так
     
  4. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    PHP:

    $from 
    1234;
    $to 5678;

    $current $from;
    foreach ( 
    file'import.txt' ) as $line )
    {
    if ( 
    $current $to )
    {
      break;
    }

    $line trim$line );
    if ( 
    '' === $line )
    {
    continue;
    }

    mysql_query"
    INSERT INTO
    `tablica`
    SET
    `id` = 
    {$current},
    `pole` = '" 
    mysql_real_escape_string$line ) . "'
    ON DUPLICATE KEY UPDATE
    `pole` = '" 
    mysql_real_escape_string$line ) . "'
    );

    ++
    $current;
    }
    P.S. поле id - должно иметь уникальный ключ. $to - а зачем? зависит от кол-ва строк в файлике ведь :)

    т.к. строк всего 5000 это будет норм, но я всегда делаю в innodb с транзакциями и мульти-инсертами
     
    Ozz99 нравится это.
  5. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    Немного не то, Он просто дописывает в базу новые строки с тем же самым ИД, а надо что бы заминил в поле pole все записи с ид от 1234 до ид 5678, при этом не тронув поле pole1, pole2, pole3

    Всё разобрался и сделал то что надо, немного код поменял
     
  6. x00xer

    x00xer Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    29
    Симпатии:
    2
    по моему phpMyAdmin умееет экспортировать даже txt файлы.. ну а если я не прав, то сделай из txt -> csv с разделителями. и все щаливай как хош
     
  7. Ozz99

    Ozz99

    Регистр.:
    15 май 2009
    Сообщения:
    201
    Симпатии:
    168
    А может кто поможет

    Я вот эту часть кода заменил

    PHP:
    mysql_query"
    INSERT INTO
    `tablica`
    SET
    `id` = 
    {$current},
    `pole` = '" 
    mysql_real_escape_string$line ) . "'
    ON DUPLICATE KEY UPDATE
    `pole` = '" 
    mysql_real_escape_string$line ) . "'
    );
    И в результате он мне перезаписаывает нужные строки, а как сделать так что бы он не перезаписывал эти строки, а просто текст дописывал. Какая функция для этого нужна.

    Например в базе есть строка текста

    И я хочу что бы из тхт взял строку
    И получилось в итоге в базе вот так
     
  8. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Код:
    mysql_query( "
    INSERT INTO
    `tablica`
    SET
    `id` = {$current},
    `pole` = '" . mysql_real_escape_string( $line ) . "'
    ON DUPLICATE KEY UPDATE
    `pole` = CONCAT( `pole`, "\n", '" . mysql_real_escape_string( $line ) . "' )
    " );  
    
    Попробуйте так
     
    Ozz99 нравится это.
  9. chudochudak

    chudochudak Писатель

    Регистр.:
    17 май 2010
    Сообщения:
    7
    Симпатии:
    2
  10. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    Для такого надо использовать UPDATE
     
Статус темы:
Закрыта.