За последние 24 часа нас посетили 72617 программистов и 3032 робота. Сейчас ищут 1470 программистов ...

Нужна помощь с импортом данных

Тема в разделе "PHP для новичков", создана пользователем Dron-Boy, 20 апр 2017.

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Всем добрый день товарищи. Вобщем написал скрипт который парсит xml файл и импортирует это все в бд, Хочу повесить на крон и забыть. Но тут проблема если я буду постоянно инсертом добовлять данные то они будут просто добавлятся и добавлятся ну будет не ахти будут дубли как сделать так что бы он добавлял только новые товары а старые если там что то изменилось то заменял на новую информацию.?
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Если я всё правльно понимаю, то тебе нужен REPLACE.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Если БД - это MySQL, то в дополнение к тому, что TeslaFeo сказал, там ещё есть прикольные команды INSERT IGNORE и INSERT ... ON DUPLICATE KEY UPDATE.
     
  4. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    ок спасибо. Погуглю. Да MySQL
    --- Добавлено ---
    Так если я правильно понял то там нужно по id сравнивать но а как я буду их сравнивать если id уникальный у товаров и создается он автоинкриментом. Обьясните про DUPLICATE KEY UPDATE а то яне понял если честно.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    позволяет задать действия, которые база должна выполнить в случае дублирования уникального ключа. К примеру, обновить часть (все остальные) поля. В твоём XML наверняка есть какой-нибудь id тоже, вот его пишешь к примеру в базу, а в следующий раз - с этой полезной командой, чтоб он обновил, к примеру, цену, но ничего не дублировал
     
  6. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    да там есть id товара. Типо в ключ писать этот id из xml и потом опять проверять по этому ключу?
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Типо сделать по этому id уникальный ключ, и тогда mysql сама будет по нему проверять, если используется команда on duplicate key update. Заугугли уже, что-ли, дохрена информации есть на русском языке про mysql.
     
    Dron-Boy нравится это.
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    реплэйс заменяет не только в случае совпадения первичного ключа. В мануале по ссылке это есть. Читай внимательно.
     
    Dron-Boy нравится это.
  9. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    ок. Сенкс)