Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Генерация категорий и товаров в 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
Link to post
Share on other sites

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

Link to post
Share on other sites
Guest

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 4 months later...

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

 

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

Link to post
Share on other sites
  • 1 month later...
  • 2 years later...
В 07.07.2016 в 05:16, snastik сказал:

 

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

 

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

Link to post
Share on other sites

2 часа назад, btrotsky сказал:

 

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

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

Link to post
Share on other sites

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

 

image.png.835ea2974b8bd8796570ca75dca971f0.png

 

image.png.e60a482ee0da00dbdd4424f39250d966.png

 

image.png.f848e7e1bc51f83a2dbb75b8db3e5045.png

 

 

Link to post
Share on other sites
  • 1 year later...
В 17.02.2016 в 00:17, pashast сказав:

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

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

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

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.