Вес товара перевод ед. измерения кг в г для всех товаров

Собственно ситуация.

Изначально на сайте была заведена характеристика вес, но простым текстовым полем.

Перетаскивал товары экспортом/импортом (т.к. надо было много чего исправлять и так было проще). При импорте указал, что характеристика вес (простое текстовое поле) на старом сайте соответствует характеристике вес (уже правильной) на новом сайте. На старом сайте все было указано в граммах, точнее в текстовое поле было просто вписано число, соответствующее весу в граммах. При импорте, естественно, это все переписалось в килограммы =((( Т.е. то, что весело 5 грамм, теперь весит 5 кг.

Когда увидел такое безобразие, для части товаров просто ручками в карточке товара переделал на граммы .... но товаров больше 23 тыс. и я понял, что это не вариант совершенно.

Может можно как-то через БД это переделать? С учетом того, что для некоторых товаров вес уже указан в граммах и их трогать не надо?

2 ответа

  • 1

    а в файле импорта эту конвертацию никак не сделать? навскидку, это самый простой путь.

    • +1

      Думал над этим. Но 23 тыс. позиции .... он мне 7 тыс. затягивал на новый сайт больше 5 часов. Хотя, может это потому что еще картинки подтягивались со старого сервера? Без картинок быстрее будет? Нет опыта?

      Кстати, я даже пробовал таблицу shop_feature_values_dimension экспортнуть и там править. Все клево, но при обратном импорте MySQL выплевывает ошибку 1062. Как я понял там ключи какие-то хитрые =()

      • +1

        Ну по определению быстрее должно быть без изображений... Ему ж не придется стучаться за ними и эскизы создавать. Думаю, должно быть быстрее. Особенно если оставить только столбцы идентификации и столбец с весом.

        С таблицей тоже прокатить должно... Если в ней нет других значений кроме веса, то перед импортом сказать ей truncate и импортировать. Если же там и другие записи кроме веса есть, то экспортнуть, в Excel поправить нужные значения, и параллельно путем нехитрых манипуляций с использованием формулы =СЦЕПИТЬ в соседнем столбце вывести SQL-запрос в нужном формате для обновления одной записи. Потом просто скопировть этот столбец запросов и исполнить в СУБД.

        Ессно, базу откатить на всяк случай перед этим :)

        • +1
          Если же там и другие записи кроме веса есть, то экспортнуть, в Excel поправить нужные значения, и параллельно путем нехитрых манипуляций с использованием формулы =СЦЕПИТЬ в соседнем столбце вывести SQL-запрос в нужном формате для обновления одной записи.

          А можно вот про это чуть подробнее? А то я не сильно але с Excel =)

          • +2

            Дмитрий, ну смотри... После экспорта получишь таблицу в которой помимо прочего будут 2 столбца: id & value. После того как поменяешь значения веса на нужные, берешь и в каком-нить пустом столбце пишешь формулу следующего содержания:

            =СЦЕПИТЬ("UPDATE  `имя_БД`.`shop_feature_values_dimension` SET  `value` =  '";B1;"' WHERE  `shop_feature_values_dimension`.`id`=";A1;";") 

            где A1 - ячейка(столбец) с id

            B1 - ячейка (столбец) с value

            Результатом будет строка вида

            UPDATE  `имя_БД`.`shop_feature_values_dimension` SET  `value` =  '100500' WHERE  shop_feature_values_dimension`.`id`=1;

            Скопировать формулу по всему столбцу и получишь SQL-запрос для обновления каждой записи. Скопировать столбец, вставить его в phpMyAdmin на вкладке SQL и исполнить.

            Я правда не готов сказать съест ли он сразу для 20 с лишним тысяч товаров, но для тысячи я такие штуки проделывал, нормально работало. Наверняка можно и упростить запрос и сделать массово, но я уж не копал, такого примитива всегда хватало, благо требуется не чаще чем раз в пол года :)

            И да... Я в базу не смотрел, имя таблицы и полей не проверял, ориентировался исключительно на предоставленные в этом топике данные и остатки памяти :)

  • 1

    Самый быстрый вариант сделать такую конвертацию - SQL запросом, обновляющей значение размерности (код 100500 заменить на нужное значение). После стоит перестроить поисковый индекс (магазин - настройки - поиск товаров)

    UPDATE
      `shop_feature_values_dimension`
    SET
      `unit`='g',
      `value_base_unit`=`value_base_unit`/1000
    WHERE
      `unit`='kg'
      AND
      `feature_id` = 100500

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите