Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Перенос данных с таблицы в таблицу
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Перенос данных с таблицы в таблицу

Страниц (1): [1]
 

1. pantela - 29 Января, 2013 - 13:48:08 - перейти к сообщению
Пришлось сделать новый сайт, надо перенети данный записей с одной в другую без потери данных...
напр. Старая таблица №1 из которой надо перенести данный в таблицу №2:
Таблицу №1
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies_lang` (
  2.   `comp_id` int(11) NOT NULL,
  3.   `lang_id` int(11) NOT NULL,
  4.   `name` varchar(255) NOT NULL,
  5.   `description` text NOT NULL,
  6.   `offer` text,
  7.   KEY `comp_id` (`comp_id`,`lang_id`),
  8.   KEY `lang_id` (`lang_id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  10.  
  11. INSERT INTO `companies_lang` (`comp_id`, `lang_id`, `name`, `description`, `offer`) VALUES
  12. (16, 1, 'Мой дом', ''),
  13. (16, 2, 'My home', ''),
  14. (16, 3, 'Benim ev', ''),
  15.  



Таблицу №2
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `logo` varchar(255) DEFAULT NULL,
  4.   `title_rus` varchar(255) DEFAULT NULL,
  5.   `title_eng` varchar(255) DEFAULT NULL,
  6.   `title_tur` varchar(255) DEFAULT NULL,
  7.   `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  8.   `url` varchar(255) DEFAULT NULL,
  9.   `email` varchar(255) DEFAULT NULL,
  10.   `fbpage` varchar(255) DEFAULT NULL,
  11.   `prior` int(11) NOT NULL DEFAULT '0',
  12.   `active` tinyint(1) NOT NULL DEFAULT '0',
  13.   `views` int(11) NOT NULL DEFAULT '0',
  14.   `ratings` int(11) DEFAULT NULL,
  15.   PRIMARY KEY (`id`)
  16. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  17.  
  18.  
  19. INSERT INTO `companies` (`id`, `logo`, `title_rus`, `title_eng`, `title_tur`, `date`, `url`, `email`, `fbpage`, `prior`, `active`, `views`, `ratings`) VALUES
  20. (16, 'home_logo.jpg', '', '', '', '2011-12-01 16:35:03', '', 'info@site.ru', 'http://www.facebook.com/pages/СТРАНИЦА', 0, 1, 17680, NULL),


т.е. грубо сказать надо перенести данное WHERE comp_id == id и перенести данные с поля lang_id = 1 в title_rus, а потом сделаю lang_id = 2 в title_eng и lang_id = 3 в title_tur
2. EuGen - 29 Января, 2013 - 13:53:56 - перейти к сообщению
Например:
0. Делаете дамп первой таблицы, назвав ее `companies` и занося данные так, как это есть у первой таблицы (у Вас получится первая таблица по структуре и данным, но с другим названием).
1. Поля, которых нет в оригинальной таблице - добавить через
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE `companies` ADD <описание поля>

2. Поля, которые в новой таблице просто по другому называются - изменить чеез
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE `companies` CHANGE <старое имя поля> <новое описание>

3. "Дамп" готов.
3. pantela - 29 Января, 2013 - 14:32:32 - перейти к сообщению
Как сделать дамп ясно конечно, у меня стоит вопрос втом как перенессти данные с определёной таблицы с определёной записи с определёного поля в определёную таблицу в определёное поле...

т.е. если внимательно посмотреть на структуру у меня информация о записи (компания) в другой таблицу, теперь перестраиваем сайт и приходить как бы объединить эти 2 таблицы в одну. Растерялся
4. EuGen - 29 Января, 2013 - 14:38:33 - перейти к сообщению
Теперь более понятно.
Это тоже просто - используйте синтаксис INSERT..SELECT
5. pantela - 29 Января, 2013 - 15:39:39 - перейти к сообщению
Не понимаю точно как сделать мне бы один пример запроса с один поле в поле, а там я сам уже перепишу другие поля и WHERE... грубо сказать
CODE (htmlphp):
скопировать код в буфер обмена
  1. WHERE comp_id (таблица companies_lang) == id (таблица companies) и перенести данные с поля lang_id (таблица companies) = 1 в title_rus(таблица companies_lang), а потом сделаю lang_id = 2 в title_eng и lang_id = 3 в title_tur
6. pantela - 30 Января, 2013 - 10:06:44 - перейти к сообщению
Пожалуйсто приведите пример...
Я не понимаю заем тут нужен INSERT ксли мне надо перенести данные а это вроде UPDATE
7. pantela - 30 Января, 2013 - 13:42:58 - перейти к сообщению
Не пойму как-то так что ли?
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `companies` SET `title_rus` WHERE (SELECT `name` FROM `companies_lang` WHERE `lang_id` = '1');

Но тут ошибыка #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (SELECT `name` FROM `companies_lang` WHERE `lang_id` = '3')' at line 1

Я понимаю что тут сперва надо определить через SELECT и помот подставить в UPDATE
8. Мелкий - 30 Января, 2013 - 13:55:21 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `companies` JOIN `companies_lang`  ON comp_id=companies.id SET title_rus=name WHERE lang_id=1

?
9. pantela - 30 Января, 2013 - 15:14:11 - перейти к сообщению
Вот это дргуое дело спс большое, один вопрос ещё...

нар. естьу меня таблица images
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies_media` (
  2.   `comp_id` int(11) NOT NULL,
  3.   `type` varchar(10) NOT NULL,
  4.   `url` varchar(255) NOT NULL,
  5.   KEY `comp_id` (`comp_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7.  
  8. --
  9. -- Dumping data for table `companies_media`
  10. --
  11.  
  12. INSERT INTO `companies_media` (`comp_id`, `type`, `url`) VALUES
  13. (16, 'photo', 'd0f54c1e0b12b09d8aa2eb7dbb2336b4_photo.jpg'),
  14. (16, 'photo', '26e88729012735c707ed2842a6a472df_photo.jpg'),
  15. (16, 'photo', 'a9c57bad603053627f39f2eb31ee4b66_photo.jpg'),
  16. (16, 'photo', 'f1906da9b7c3b6b6311787f5bb1c258c_photo.jpg'),
  17. (16, 'photo', 'd63bc9b6fc80611f3edc43225cb777bc_photo.jpg'),
  18. (16, 'photo', '75a1324b62fec651c90b52aad167687f_photo.jpg'),
  19. (16, 'photo', '89f45d41ee993d34e30ff44dc4fc4e44_photo.jpg'),
  20. (16, 'photo', 'a6a3fd1c0be5f993569107e015d38830_photo.jpg'),
  21. (16, 'photo', '8ed32cb5d9fc14a8dee50971824be902_photo.jpg'),
  22. (16, 'photo', 'f979d1565a27dbb4185a62fadc60082d_photo.jpg'),
  23. (16, 'photo', '4ec12a3fc4060f9f43f7c3881a033b28_photo.jpg'),
  24. (16, 'photo', '17cfdc76cac1a882ac4bbab39f01a5b2_photo.jpg');


И все изображения мне надо впихнуть в другую таблицу в одно поле, но что бы делилось бы через слеш, т.е. в поле получается запись так
CODE (htmlphp):
скопировать код в буфер обмена
  1. 4ec12a3fc4060f9f43f7c3881a033b28_photo.jpg/17cfdc76cac1a882ac4bbab39f01a5b2_photo.jpg/....
10. Мелкий - 30 Января, 2013 - 15:39:36 - перейти к сообщению
Не надо. Оставьте имеющуюся нормальную структуру.
11. pantela - 30 Января, 2013 - 22:14:14 - перейти к сообщению
Согласен, но грубо сказать, сайт который я делал давно одному заказчику передали другому на реконструкцию, вот и тот программист по своему делает... Хм

Подскажите а как выполнить запрос, только через phpMyadmin вроде не получится... наверное надо вынести все записи в PHP файл, и от туда уже через разделить впихнуть всё в поле, Растерялся

 

Powered by ExBB FM 1.0 RC1