Сканування даних

Це звісно ще не BigData, але однією з найцікавіших ніш в моїй роботі є сканування та обробка даних.

Наприклад, Ви продаєте товар від основного постачальника, але той ще не випустив повноцінного забезпечення для перевірки оновлень. Відтак, ви обоє втрачаєте гроші в тих випадках, коли люди звертаються за покупкою відсутніх товарів. Або коли виявляється, що ціна змінена…

0001 integer format SQL

Фейл. Помітив, що при обробці запакував купу записів з нулями на початку, типу: 00340542 в поле з типом int()… Тепер замість 00001 там красива одиниця, або 340542 замість попереднього прикладу.

UPD поставив тип поля на varchar(). Продуктивність йде спатки…

INSERT IGNORE — оновлення при існуючому записі MySQL

Якщо у вас тип сервера: MariaDB, то задача “вставити новий запис, або ж оновити якщо даний запис вже існує” легко виконується за допомогою команди INSERT IGNORE. Дана функція не видає помилку так як ON DUPLICATE KEY UPDATE

INSERT IGNORE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 0 rows affected (0.00 sec)

MySQL видалення об’єктів таблиці, дублікати яих не присутні в таблиці №2

Приводимо у співвідношення дві таблиці, видаляючи вкладеним записом з ikeaProductsStatistic ті товари, які не присутні в ikeaProducts

DELETE FROM ikeaProductsStatistic WHERE id not in (select id from ikeaProducts)

Функція LENGTH, Mysql — визначення довжини поля

стоїть завдання паерекласти описи 7000 + товарів, при чому описи розбиті на частини. Загалом виходить ~40 тисяч записів різного калібру.

Сканер товарів

В житті має бути місце для поезії — раз в рік я макаюсь мордочкою в цікавий проект, цього разу це павук для пошуку та обробки товарів.

Історія коротка — є добрі люди, які возять товари з Ikea, возять в пристойних об’ємах, що дозволяє заробляти навіть при мінімальній націнці. Єдина біда — товарів на сайтах Ikea майже 10 000 — відтак, якщо якийсь з продуктів знімають, а його вибирають на сайті компанії-продавця в Україні, то виходить доволі незручно. Відтак завдання почалось з того, щоб просто перевіряти наявність товарів на основному сайті.

Ну, а далі пішла еволюція: сканування товарів в загальному, переклад на українську, конвертація валюти, додаткові розширення тощо.

В процесі роботи набрався непоганий кейс рішень з базами та curl-запитами — про них детальніше в наступних матеріалах.

Перевір казаписів на унікальність MySQL

Простий скрипт перевірки продублюваних записів в базі даних.

SELECT name, count(*)
FROM table_dest
GROUP BY name
HAVING count(*) > 1
ORDER BY count(*);

При скануванні інформації в великих об’ємах важливо, щоб вона не повторювалась — при записі можна також користуватись альтернативним способом перевірки.

$query_insert = "INSERT INTO Products (ProductURL)
SELECT * FROM (SELECT '" .$url ."') AS tmp
WHERE NOT EXISTS (
 SELECT name FROM Products WHERE ProductURL = '" .$url ."'
) LIMIT 1";

 

MySQL, not EXISTS. Звірка наявності перекладу

Не все у світі крутиться навколо WordPress. Іноді девелопер вирішує задачі самописним кодом.

Вчора мав цікаву задачу: перекласти опис з польської на українську, 9,166 записів.

WordPress — змінюємо головну тему через базу даних

Буває, що накосячиш, встановивши нову тему, а завернути не вдається, оскільки навіть на адмінці видає помилку…

Тоді йдемо в базу даних (php-myadmin) — таблиця wp_options — знаходимо записи зі значеннями stylesheet та template в колонці option_name. І замінюємо значення option_value на назву потрібної Вам форми.

Приблизно як на скріншоті.

Заміна інформації в серіалізованих даних

Доволі милий факапчик трапився при переносі клієнтського сайту з демонстраційного серверу на основний: часто система задає абсолютні лінки в матеріалах, зображеннях та інших деталях.

І якщо видалення/заміна цих абсолютних шляхів проходить в матеріалах, то у віджетах вона начисто відключає вивід даних.