Выкладываю пример кода по миграции баз для OC может кому пригодится.
set_time_limit(15000);
/* База куда мигрируем */
$connection = new mysqli("localhost", "логин", "пароль", "имя базы №1")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
$connection->set_charset("utf8");
/* база донор */
$connection1 = new mysqli("localhost", "логин", "пароль", "имя базы №2")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
$connection1->set_charset("utf8");
$getP1 = getProductDescription1($connection1);
$path = __DIR__ .'/image/';
foreach ($getP1 as $getP1_n) {
$getPr = getProducts($connection, $getP1_n[1]);
if ( empty ($getPr)){
file_put_contents($path.$getP1_n[11],file_get_contents('http://домен с которого копируем картинки с товаров/image/'.$getP1_n[11]));
setProducts($connection, $getP1_n[1], $getP1_n[11], $getP1_n[14]);
$product_id = $connection->insert_id;
setProductDescription($connection, $product_id, $getP1_n[33], $getP1_n[34]);
setProductToStore($connection, $product_id);
setProductToLayout($connection, $product_id);
if ($getP1_n[48]=='Уличные'){
$category_id = '1131';
setNewProductToCategory($connection, $product_id, $category_id);
}
elseif ($getP1_n[48]=='Промышленные') {
$category_id = '1130';
setNewProductToCategory($connection, $product_id, $category_id);
}
elseif ($getP1_n[48]=='Армстронг-панели') {
$category_id = '1129';
setNewProductToCategory($connection, $product_id, $category_id);
}
}else {
/* В случае если присутствует одинаковая модель добавляем к имени модели к примеру (-n) */
setProducts($connection, $getP1_n[1].'-n', $getP1_n[11], $getP1_n[14]);
$product_id = $connection->insert_id;
setProductDescription($connection, $product_id, $getP1_n[33], $getP1_n[34]);
setProductToStore($connection, $product_id);
setProductToLayout($connection, $product_id);
if ($getP1_n[48]=='Уличные'){
$category_id = '1131';
setNewProductToCategory($connection, $product_id, $category_id);
}
elseif ($getP1_n[48]=='Промышленные') {
$category_id = '1130';
setNewProductToCategory($connection, $product_id, $category_id);
}
elseif ($getP1_n[48]=='Армстронг-панели') {
$category_id = '1129';
setNewProductToCategory($connection, $product_id, $category_id);
}
/* В случае если при миграции пошли ошибки очищаем все связанные таблицы из БД */
/*delete1($connection, $getPr['product_id']);
delete2($connection, $getPr['product_id']);
delete3($connection, $getPr['product_id']);
delete4($connection, $getPr['product_id']);
delete5($connection, $getPr['product_id']);
*/
}
}
function getProducts($connection, $model) {
$sql = ("SELECT * FROM `oc_product` WHERE `model` = '" . $model . "'");
$query = $connection->query($sql);
while ($rows = mysqli_fetch_assoc($query)) {
$item = $rows;
}
return $item;
}
function getProductDescription1($connection1){
$sql = "SELECT * FROM `oc_product` p LEFT JOIN oc_product_description p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_to_category p3s ON (p.product_id = p3s.product_id) LEFT JOIN oc_category_description p4s ON (p3s.category_id = p4s.category_id) WHERE p.manufacturer_id = '31'";
$query = $connection1->query($sql);
while ($rows = mysqli_fetch_row($query)){
$item[] = $rows;
}
return $item;
}
function delete1($connection, $product_id) {
$sql = "DELETE FROM `oc_product_description` WHERE `product_id` = '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function delete2($connection, $product_id) {
$sql = "DELETE FROM `oc_product_to_store` WHERE `product_id` = '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function delete3($connection, $product_id) {
$sql = "DELETE FROM `oc_product_to_layout` WHERE `product_id` = '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function delete4($connection, $product_id) {
$sql = "DELETE FROM `oc_product_to_category` WHERE `product_id` = '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function delete5($connection, $product_id) {
$sql = "DELETE FROM `oc_product` WHERE `product_id` = '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function setUpdateProductsToManufactur($connection, $product_id) {
$sql = "UPDATE `oc_product` SET `manufacturer_id`='30' WHERE `product_id`= '". (int)$product_id ."'";
$query = $connection->query($sql);
}
function setProducts($connection, $model, $image, $price) {
$sql = "INSERT INTO `oc_product` SET model = '" . $model . "', sku = '', upc = '', ean = '', jan = '', isbn = '', mpn = '', location = '', quantity = '100', minimum = '1', subtract = '0', stock_status_id = '7', date_available = '" . date("Y-m-d") . "', image = '" . $image . "',manufacturer_id = '30', shipping = '1', price = '" . $price . "', points = '0', weight = '0.00000000', weight_class_id = '1', length = '0.00000000', width = '0.00000000', height = '0.00000000', length_class_id = '1', status = '1', tax_class_id = '0', sort_order = '1', date_added = NOW()";
$query = $connection->query($sql);
}
function setNewProductToCategory($connection, $product_id, $category_id) {
$sql = "INSERT INTO `oc_product_to_category` SET category_id = '" . (int) $category_id . "', product_id = '" . (int) $product_id . "'";
$query = $connection->query($sql);
}
function setProductDescription($connection, $product_id, $name, $description) {
$sql = "INSERT INTO `oc_product_description` SET `product_id`='". (int)$product_id ."', language_id = '2',`name` ='". $name ."', `description` ='". $description ."', meta_title = '". $name ."', meta_description = '". $name ."', meta_keyword = '". $name ."',custom_alt = '', custom_h1 = '', custom_h2 = '', custom_imgtitle = '', custom_title = ''";
$query = $connection->query($sql);
}
function setProductToStore($connection, $product_id) {
$sql = "INSERT INTO `oc_product_to_store` SET product_id = '" . (int) $product_id . "', store_id = '0'";
$query = $connection->query($sql);
}
function setProductToLayout($connection, $product_id) {
$sql = "INSERT INTO `oc_product_to_layout` SET product_id = '" . (int) $product_id . "', store_id = '0', layout_id = '0'";
$query = $connection->query($sql);
}