Ок, спасибо!
еще бы подсказал bgg87 как импортнуть с помощью запроса!
Фуф! Наконец написал. Ловите!
ВАЖНО!
Перед всеми манипуляциями делаем резервное копирование баз данных!
Для работы потребуется:
1.Notepad++
2.OpenOffice Calc
Небольшое уточнение.
Переносил с “Joomla1.5.26 + VirtueMart 1.1.6” на “Joomla2.5 + VirtueMart 2.6”. ВРОДЕ все работает. (товары, категории, бренды - видны, оформление заказа от кнопки “купить” до “подтвердить заказ” тоже работает, в админке - сохраняются и удаляются товары, бренды, категории)
В данный момент переношу с “Joomla2.5 + VirtueMart 2.6” на “Joomla3.4.1 + VirtueMart3”
Пока заметил косяк с сохранением товаров - по ошибкам было что-то вроде - jQuery ругается на неправильный синтаксис в таблицы _price.
В jQuery не силен поэтому долго рыться не стал. Скорее всего одно из полей при импорте не соответствовало старой таблице. Буду пробовать заново все и потом отпишусь что вышло.
Итак, начнем.
Экспортируем из Базы Данных MySQL таблицы (из старая версия VirtueMart):
*_vm_product (товары)
*_vm_category (категории товаров)
*_vm_manufacturer (производители)
*_vm_product_mf_xref (привязка товаров к производителям)
*_vm_product_files (фото товаров)
*_vm_product_category_xref (привязка товаров к категориям)
*_vm_product_price (цены)
*_vm_product_relations (сопутствующие товары)
Где * префикс ваших таблиц.
Все “привязки” товаров к категориям, бренда (производителям) и т.д. осуществляются по id, кроме сопутствующих - sku (артикул). Так что будьте внимательны, это очень важно! При импорте перенести id товаров. Со старой таблицы в новую. Ниже описано как.
Далее устанавливаем чистую Joomla + VirtueMart (можете попробовать сразу на самую актуальную версию, но советую начать с 2.5)
Настраиваем VirtueMartРаздел «МАГАЗИН»
Вкладка - Продавец
Информация о продавце (заполняем)
Выбираем валюту (у меня Russian ruble)
Вкладка - Информация о покупателе
Заполняем все обязательные поля
Раздел «НАСТРОЙКИ»
Вкладка - Магазин
Дополнительные параметры
Разрешить обновление базы данных - ОК
Вкладка - Шаблон
Ставим как советуют в сообщении сверху
Безопасный путь (у меня /home/users/***/vmfiles/)
Далее создаем в новой VirtueMart для теста и сравнения таблиц Баз Данных:
Категорию (можно несколько)
Производителя (можно несколько)
Товар (можно несколько)
Заполняем все те поля, по всем пунктам, которые использовались в старой версии и данные которые требуется перенести на новую версию VirtueMart.
После этого экспортируем из новой Базы Данных таблицы:
*_virtuemart_categories
*_virtuemart_categories_ru_ru
*_virtuemart_category_categories
*_virtuemart_category_medias
*_virtuemart_manufacturers
*_virtuemart_manufacturers_ru_ru
*_virtuemart_manufacturer_medias
*_virtuemart_products
*_virtuemart_products_ru_ru
*_virtuemart_product_categories
*_virtuemart_product_customfields
*_virtuemart_product_manufacturers
*_virtuemart_product_medias
*_virtuemart_product_prices
Где * префикс ваших таблиц.
Далее расписывать все таблицы не буду, опишу один пример, с остальным догадаетесь.
Уточнение! В старой версии (у меня) в Базе Данных - одна таблица для товаров “_vm_product” (тут все интересующие нас данные по товару), а в новой 2 “_virtuemart_products” (тут id и sku) и “_virtuemart_products_ru_ru” (тут id и описание).
Окрывает в Notepad++эти 3 таблицы.
Включаем одну очень нужную функцию:
Вид>Отображение символов>Отображать все символы (отмечаем если не включено)
Смотрим таблицу _vm_product
Находим примерно след:
INSERT INTO `*_vm_product` (`product_id`, `vendor_id`, `product_parent_id`, `product_sku`, `product_s_desc`, `product_desc`, `product_thumb_image`, `product_full_image`, `product_publish`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_url`, `product_in_stock`, `product_available_date`, `product_availability`, `product_special`, `product_discount_id`, `ship_code_id`, `cdate`, `mdate`, `product_name`, `product_sales`, `attribute`, `custom_attribute`, `product_tax_id`, `product_unit`, `product_packaging`, `child_options`, `quantity_options`, `child_option_ids`, `product_order_levels`, `product_title`, `product_metadesc`, `product_metakey`, `product_abstract`, `product_canonical`) VALUES
В этой строке название наших полей для товаров (примерно как в файле импорта программы CSVI). Под этой строкой находятся уже данные всех товаров, каждый след. с новой строки.
Каждое поле разделяется (запятой и пробелом).
Жмем Ctrl+H.
В поле “найти” вписываем (, ) - запятую и пробел
В поле “заменить на” вписываем ( ) Tab - это клавиша над Caps Lock
Жмем “Заменть все”
Далее комп может подвиснуть, на мин (если 10К товаров к примеру), после чего вместо (, ) запятой и пробела увидим ( ) Tab в виде стрелки вправо.
Выделяем все строки товаров и вставляем в таблицу программы OpenOffice.
При переносе появится окно “Импорт текста”.
Тут смотрим раздел “поле”
Отмечаем все данные (жмете пустой квадратик в левом верхнем углу, между строкой и столбцом). Таблица выделится черным цветом и после этого в “тип столбца” выбираем “Текст”. Жмем “ОК”
Теперь тоже самое делаем с таблицами новой версии VirtueMart _virtuemart_products и _virtuemart_products_ru_ru
Сравниваем Старую таблицу с двумя Новыми.
Теперь с помощью нотпада и опен офиса создаем данные на основе ранее созданных тестовых товаров, категорий и брендов.
Наконец, самое главное - заносим данные в Базу Данных.
Делается это так.
Переходим в новую Базу Данных. Заходим в нужную нам таблицу, в нашем примере это
_virtuemart_products
Теперь открываем вкладку “SQL”
И вписываем туда (к примеру):
INSERT INTO `*_virtuemart_products` (`virtuemart_product_id`, `virtuemart_vendor_id`, `product_parent_id`, `product_sku`, `product_gtin`, `product_mpn`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_url`, `product_in_stock`, `product_ordered`, `low_stock_notification`, `product_available_date`, `product_availability`, `product_special`, `product_sales`, `product_unit`, `product_packaging`, `product_params`, `hits`, `intnotes`, `metarobot`, `metaauthor`, `layout`, `published`, `pordering`, `created_on`, `created_by`, `modified_on`, `modified_by`, `locked_on`, `locked_by`) VALUES
(1, 1, 0, '0001', '1', '', NULL, 'KG', NULL, NULL, NULL, 'M', '', 0, 0, 0, '0000-00-00 00:00:00', '', 0, 0, 'KG', NULL, 'min_order_level=""|max_order_level=""|step_order_level=""|product_box=""|', NULL, '', '', '', '0', 1, 0, '2015-03-07 18:15:33', 62, '2015-03-10 02:19:28', 62, '0000-00-00 00:00:00', 0),
Поясняю. Для каждого запроса примерно такая структура:
INSERT INTO `название таблицы` (`поле1-число`, `поле2-текст`, `поле3-значение`) VALUES
(1, '0001', NULL);
Для нескольких запросов делать так:
INSERT INTO `название таблицы` (`поле1-число`, `поле2-текст`, `поле3-значение`) VALUES
(1, '0001', NULL),
(2, '0002', NULL),
(3, '0003', NULL);
Важно! Обратить внимание на, то что в конец Строки ставим запятую, а в конце Запроса точку с запятой!
В моем случае я делал по 1000 запросов SQL за один раз, больше не получалось, то ли ресурсы хостинга не позволяли, то ли особенность MySQL.
Кстати! Этот запрос “СОЗДАЕТ” данные и если есть данные с таким же id при добавлении будет конфликт и появится ошибка, так что перед добавлением (импортом) данных отчистите таблицу от ранее внесенных тестовых товаров категорий и т.д.
Писал по памяти, но надеюсь ничего не упустил! Желаю огромной удачи!
Не бойтесь пробовать!
ГЛАВНОЕ ДЕЛАЙТЕ БЕКАПЫ!