- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть две базы со старого движка и новая, различия в таблицах, хочу скриптом перенести нужные поля со старой таблицы на новую.
Создаю массив и на printf отлично показываются все данные а вот как его заганть в новую таблицу проблема.
Вот с чего начал
<?php
$db = mysql_connect('localhost', 'name', 'pass', 'oldbase');
mysql_select_db('oldbase', $db);
$db1 = mysql_connect('localhost', 'name1', 'pass1', 'newbase');
mysql_select_db('newbase', $db1);
$result = mysql_query("SELECT *, id_category, id_parent, level_depth, nleft, nright, active, date_add, date_upd, position FROM oldbase.ps_category");
if (!$result) {
echo 'Ошибка запроса: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
mysql_query("INSERT INTO newbase.ps_category (id_category) values ($row[0]");
}
?>
*, id_category - жестко.
http://php.net/manual/ru/function.mysql-real-escape-string.php
http://php.net/manual/ru/function.mysql-fetch-assoc.php
http://www.google.ru/search?client=opera&rls=ru&q=update+mysql+with+join&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest может тоже поможет
Да, нужно перенести магазин на новый двиг, а там и категории, атрибуты и прочее.
А можно это реализовать через select и insert into? искал примеры где реализванно на разных базах и ненашел.
Жестокость исправил)
<?php
$db = mysql_connect('localhost', 'name', 'pass', 'oldbase');
mysql_select_db('oldbase', $db);
$db1 = mysql_connect('localhost', 'name1', 'pass1', 'newbase');
mysql_select_db('newbase', $db1);
$result = mysql_query("SELECT id_category, id_parent, level_depth, nleft, nright, active, date_add, date_upd, position FROM oldbase.ps_category");
if (!$result) {
echo 'Ошибка запроса: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
mysql_query("INSERT INTO newbase.ps_category (id_category) values ($row[0])");
mysql_query("INSERT INTO newbase.ps_category (id_parent) values ($row[1])");
mysql_query("INSERT INTO newbase.ps_category (level_depth) values ($row[2])");
mysql_query("INSERT INTO newbase.ps_category (nleft) values ($row[3])");
mysql_query("INSERT INTO newbase.ps_category (nright) values ($row[4])");
mysql_query("INSERT INTO newbase.ps_category (active) values ($row[5])");
mysql_query("INSERT INTO newbase.ps_category (date_add) values ($row[6])");
mysql_query("INSERT INTO newbase.ps_category (date_upd) values ($row[7])");
mysql_query("INSERT INTO newbase.ps_category (position) values ($row[7])");
}
?>
PS Я в этом деле сосвсем нуб, может есть похожий пример.
Можно наверное, если обе бд доступны для одного и того же юзера. http://www.google.ru/search?client=opera&rls=ru&q=insert+into+%D0%B8%D0%B7+%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B+%D0%B2+%D0%B4%D1%80%D1%83%D0%B3%D1%83%D1%8E&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
---------- Добавлено 31.10.2012 в 21:53 ----------
Можно наверное, если обе бд доступны для одного и того же юзера. http://www.google.ru/search?client=opera&rls=ru&q=insert+into+%D0%B8%D0%B7+%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B+%D0%B2+%D0%B4%D1%80%D1%83%D0%B3%D1%83%D1%8E&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
---------- Добавлено 31.10.2012 в 21:53 ----------
Спасибо сработало.
А если в новой таблице уже есть некоторые данные и вылетает ошибка, тогда использовать нужно UPDATE?
#1062 - Duplicate entry '1' for key 'PRIMARY'
поля при селекте должны быть в том же порядке что и поля при инсерте.
#1062 - Duplicate entry '1' for key 'PRIMARY'
http://phpclub.ru/mysql/doc/replace.html
Появилась небольшая проблема, строку с id_category = 1 во всех полях нужно пропустить
сейчас
INSERT INTO newdb.table ( id_category, id_parent, level_depth, nleft, nright, active, date_add, date_upd, position ) SELECT id_category, id_parent, level_depth, nleft, nright, active, date_add, date_upd, position FROM olddb.table
Смотрел описание WHERE но там нужно указать в каких случая работает insert a вот с пропусками проблема.
И как лучше сделать этот пропуск в SELECT или уже при вставке. Просто в таблице новой базы сделали первую строку с id_category = 1 - root ,id_category = 2 - home а в старой базе только id_category = 1 - home а дальше с ид 3- это товарные категории. Мне бы просто перенести все кроме id=1,2
В конце запроса дописать
В конце запроса дописать
А в остальных столбцах где есть первые две строки с id1,2 будут сохранены?
С какими остальными? m0tti, а почему бы тогда не скопировать старую таблицу в новую базу, и править ее уже там как вам нужно, удаляя ненужные поля, записи?