Jump to content
pashast

Генерация категорий и товаров в phpMyAdmin.

Recommended Posts

Следующий SQL-запрос позволит сгенерировать любое количество категорий товаров для тестирования магазина.

Единственное, у пользователя БД должен быть доступ к процедурам.

 

Запрос написан под opencart, при желании можете переделать под ocstore.

DROP PROCEDURE IF EXISTS `random_category`;
DELIMITER $$
CREATE PROCEDURE `random_category` (IN `counter` INT(3), IN `subcat` INT(3), IN `product` INT(4))
BEGIN
    DECLARE category_id int(11);
    DECLARE subcat_id int(11);
    DECLARE product_id int(11);
    DECLARE subcat_counter int(11);
    DECLARE product_counter int(11);
    DECLARE empty_col varchar(11);

    DECLARE parent_id int(11);
    DECLARE top tinyint(1);
    DECLARE top_subcat tinyint(1);
    DECLARE column_col tinyint(1);
    DECLARE sort_order int(3);
    DECLARE status tinyint(1);
    DECLARE date_added datetime;
    DECLARE date_modified datetime;

    DECLARE language_id int(11);
    DECLARE name_col varchar(255);
    DECLARE subcat_name varchar(255);
    DECLARE product_name varchar(255);
    DECLARE description text;
    DECLARE product_description text;
    DECLARE meta_title varchar(255);
    DECLARE meta_description varchar(255);
    DECLARE meta_keyword varchar(255);

    DECLARE store_id int(11);

    SET category_id = 1;
    SET product_id = 1;

    SET empty_col = '';
    SET parent_id = 0;
    SET top = 1;
    SET top_subcat = 0;
    SET column_col = 6;
    SET sort_order = 0;
    SET status = 1;
    SET date_added = NOW();
    SET date_modified = NOW();

    SET language_id = 1;

    SET store_id = 0;

    main_loop: WHILE category_id < counter DO
        SET name_col = CONCAT_WS(' ', 'Category', category_id);
        SET description = CONCAT_WS(' ', 'Lorem ipsum dolor si amet', category_id);
        SET meta_title = CONCAT_WS(' ', 'meta_title', category_id);
        SET meta_description = CONCAT_WS(' ', 'meta_description', category_id);
        SET meta_keyword = CONCAT_WS(' ', 'meta_keyword', category_id);

        INSERT INTO oc_category VALUES (category_id, empty_col, parent_id, top, column_col, category_id, status, date_added, date_modified);
        INSERT INTO oc_category_description VALUES (category_id, language_id, name_col, description, meta_title, meta_description, meta_keyword);
        INSERT INTO oc_category_to_store VALUES (category_id, store_id);

          SET subcat_id = category_id + 1;
          SET subcat_counter = category_id + subcat;

          subcat_loop: WHILE subcat_id < subcat_counter DO
                    SET name_col = CONCAT_WS(' ', 'SubCategory', subcat_id);
                    INSERT INTO oc_category VALUES (subcat_id, empty_col, category_id, top_subcat, column_col, subcat_id, status, date_added, date_modified);
                    INSERT INTO oc_category_description VALUES (subcat_id, language_id, name_col, description, meta_title, meta_description, meta_keyword);
                    INSERT INTO oc_category_to_store VALUES (subcat_id, store_id);

                        SET product_counter = product_id + product;
                        product_loop: WHILE product_id < product_counter DO

                              SET product_name = CONCAT_WS(' ', 'Product', product_id);
                              SET product_description = CONCAT_WS(' ', 'Lorem ipsum dolor si amet', product_id);

                              INSERT INTO oc_product
                                (product_id, model, sort_order, status, date_added, date_modified)
                                VALUES
                                (product_id, product_id, product_id, status, date_added, date_modified);

                              INSERT INTO oc_product_description
                                (product_id, language_id, name, description, meta_title, meta_description)
                                VALUES
                                (product_id, language_id, product_name, product_description, product_name, product_name);

                              INSERT INTO oc_product_to_category VALUES (product_id, subcat_id);
                              INSERT INTO oc_product_to_store VALUES (product_id, store_id);

                              SET product_id = product_id + 1;

                        END WHILE product_loop;

                    SET subcat_id = subcat_id + 1;
          END WHILE subcat_loop;

        SET category_id = subcat_id + 1;

    END WHILE main_loop;
END;$$
DELIMITER ;

На видео - пример.

 

Генерируется ВСЕГО 400 категорий,

Родительские категории разбиты на подкатегории по 40штук

В каждой подкатегории 50 товаров

итого выходит (400-(400/40))*50 = 19500 товаров

 

товары и категории перед выполнением процедуры нужно все удалить

 

 

переменные в процедуру можете подставлять любые

 

Будьте осторожны, не вводите слишком большие значения, я по ошибке сгенерил 5 000 000 товаров, сервер завис на 5 минут  :ugeek:

Edited by pashast
  • +1 13

Share this post


Link to post
Share on other sites

Огонь!!!

Share this post


Link to post
Share on other sites

pashast спасибо, вот только недавно подумал базу создать на "миллион" для тестов. Думал уже писать скрипт

Share this post


Link to post
Share on other sites

Спасибо.Отложил в загашничек)

Share this post


Link to post
Share on other sites

Единственное для чистоты эксперимента должна быть база пустая по крайней мере в таблицах категорий и товаров + язык с id = 1.

Тоже отложил, спс

  • +1 1

Share this post


Link to post
Share on other sites

Два лайка этому господину!

Share this post


Link to post
Share on other sites

чотка
 

  • +1 1

Share this post


Link to post
Share on other sites

pashast спасибо, вот только недавно подумал базу создать на "миллион" для тестов. Думал уже писать скрипт

 

У меня живая-рабочая есть )

Share this post


Link to post
Share on other sites

У меня живая-рабочая есть )

Поделитесь?

Автору спасибо.  Для теста то что нужно.

Share this post


Link to post
Share on other sites
В 07.07.2016 в 05:16, snastik сказал:

 

У меня живая-рабочая есть )

 

Так же интерисует, поделитесь?)

Share this post


Link to post
Share on other sites
2 часа назад, btrotsky сказал:

 

Так же интерисует, поделитесь?)

Коммерческая живая рабочая база. Если бы она была ваша, как бы вам подобное "поделитесь"  понравилось?

Share this post


Link to post
Share on other sites

у меня в заначке есть такое живое. но отдавать жалко. могу поменять на что-то :)

 

image.png.835ea2974b8bd8796570ca75dca971f0.png

 

image.png.e60a482ee0da00dbdd4424f39250d966.png

 

image.png.f848e7e1bc51f83a2dbb75b8db3e5045.png

 

 

Share this post


Link to post
Share on other sites
В 17.02.2016 в 00:17, pashast сказав:

Запрос написан под opencart, при желании можете переделать под ocstore.

Жаль конечно что только под opencart.

Хотелось бы попробовать такое на ocstore-2.3

Желание есть, возможности сделать нет :(

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.