сравнение двух массивов в csv и sql

Izrael

Гуру форума
Регистрация
11 Фев 2008
Сообщения
514
Реакции
65
Ребят задача такая есть два файла csv и sql .
в csv есть строки
11.png

название товара я его выделил а дальше фотография.

нужна решение чтоб произвести слияние именно в sql файл , по принципу.
1. в sql найти такоеже название в данном примере это
Код:
INSERT INTO `oc_product_description` (`product_id`, `language_id`, `name`, `description`, `meta_description`, `meta_keyword`, `seo_title`, `seo_h1`, `tag`) VALUES ('20601', '1', '*219   Оберег от неприятностей (в рамке)', '', '', '', '', '', '');

далее прочитать id строки в данном примере это 20601 и по id уже проверить в другом поле записана ли там картинка

Код:
INSERT INTO `oc_product` (`product_id`, `model`, `sku`, `upc`, `ean`, `jan`, `isbn`, `mpn`, `location`, `quantity`, `stock_status_id`, `image`, `manufacturer_id`, `shipping`, `price`, `points`, `tax_class_id`, `date_available`, `weight`, `weight_class_id`, `length`, `width`, `height`, `length_class_id`, `subtract`, `minimum`, `sort_order`, `status`, `date_added`, `date_modified`, `viewed`) VALUES ('20601', '*219', '', '', '', '', '', '', '', '130', '5', 'ТУТ дОЛЖ НА БЫТЬ КАРТИНКА', '0', '1', '259.0000', '0', '0', '2014-03-31', '0.00000000', '1', '0.00000000', '0.00000000', '0.00000000', '1', '1', '1', '1', '1', '2014-04-01 11:04:14', '0000-00-00 00:00:00', '0');

Если картинки нет! то взять ее из csv и записать sql //

За реализацию данного проекта, готов заплатить если при условии что все картинки 80% встанет на сайт.
sql запрос взят из базы MaxyStore 5.

ЕСЛИ Я НЕ ПОНЯТНО НАПИСАЛ, НО ВЫ МЫСЛЬ УЛОВИЛИ ДОВАЙТЕ СОЗВОНИМСЯ Я ВСЕ ЧЕТКО ОБЪЯСНЮ
 
csv можно залить в новую временную sql табличку - это умеет делать даже phpmyadmin, но с navicat удобнее.

Далее применить обычную магию inserta результатом селекта
Код:
insert into oc_product(`product_id`, `image`)
 select opd.`product_id`, t.`image` FROM oc_product_description opd
join temp_csv t ON opd.name = t.name
Для простоты рекомендую сначала select составить, который будет возвращать желаемые данные, потом просто подставить insert.

А вот для того чтобы заполнить другие поля в `oc_product` их надо где-то взять...

Если надо только поменять значение img, то вместо insert надо использовать update, там синтаксис немного другой будет...
 
Последнее редактирование:
ЕСЛИ Я НЕ ПОНЯТНО НАПИСАЛ, НО ВЫ МЫСЛЬ УЛОВИЛИ ДОВАЙТЕ СОЗВОНИМСЯ Я ВСЕ ЧЕТКО ОБЪЯСНЮ
1. Извините, но глаз режет - правильно писать "нужнО", "НЕПОНЯТНО"(слитно) и "дАвайте". Если Вам пофиг, то хотя бы уважайте других.
2. По существу вопроса - 2 пути я вижу. первый, как предложил latteo- загоняем csv во временную таблицу и там работаем на уровне скуля, но это не всегда удобно, например когда содержание scv постоянно меняется. Второй - парсим scv средствами php и так-же инсерт на основе селекта и данных парсинга.

Что именно выбрать и как реализовать зависит от того что именно Вам нужно получить и какими средствами.
 
Вероятнее всего, автору нужно только картинки перенести, чтобы не заливать заново. Решение только одно - импортировать и то и другое в mysql и с помощью запросов совместить нужные данные, как собственно и советовал latteo. Парсить sql файл сложно, так как insert может быть множественным. В целом, задача несложная. Судя по "oc_", речь идет об OpenCart.
 
Назад
Сверху