Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

22.11.2008, 19:22
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Сделать дамп таблицы через phpmyadmin, создать новую таблицу с нужными условиями на основе дампа, сделать процедуру вставки в новую таблицу старых данных на основании новых условий, вставить данные, удалить старую таблицу, переименовать новую таблицу как старую, изменить те участки кода в двиге, где происходит обращение к полям из этой таблицы. Всё
|
|
|

22.11.2008, 19:41
|
|
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
Провел на форуме: 350782
Репутация:
81
|
|
ясен красен что так можно. Дампить не вариант, надо прям на сервере что-то сделать. А как? Писать скрипт которыйе будет селектить из старой и инсертить в новыю таблицу, но тогда сервак умерет от 70000 инсертов
|
|
|

22.11.2008, 19:45
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
А по другому никак. Чтобы не умер - делай паузу в 10 секунд например перед каждым апдейтом. Через денек всё и пропишется
|
|
|

22.11.2008, 19:59
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
На самом деле никаких сложных процедур и скриптов создавать не надо, решение довольно простое, используются лишь штатные средства MySQL.
Итак, сперва получаем структуру исходной таблицы. Допустим, это таблица accounts:
Код:
mysql> SHOW CREATE TABLE accounts;
CREATE TABLE `accounts` (
`account_id` bigint(255) default '0',
`affiliate_id` bigint(255) default '0',
`site_handle` varchar(255) default NULL,
`default_address` varchar(255) default NULL,
`email` varchar(255) default NULL,
`firstname` varchar(255) default NULL,
`password` varchar(255) default NULL,
`send_announcements` int(2) default '0',
`ip_address` varchar(255) default NULL,
`is_active` int(2) default '0',
`is_affiliate` int(2) default '0',
`last_modified` varchar(255) default NULL,
`last_loggedin` varchar(255) default NULL,
`last_updated` varchar(255) default NULL,
`time_created` varchar(255) default NULL,
UNIQUE KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Теперь создаем новую таблицу с измененной структурой на основе исходной таблицы:
Код:
mysql>CREATE TABLE `accounts2` (
`account_id` bigint(255) default '0',
`is_active` int(2) default '0',
`is_affiliate` int(2) default '0',
`last_modified` varchar(255) default NULL,
`last_loggedin` varchar(255) default NULL,
`last_updated` varchar(255) default NULL,
`time_created` varchar(255) default NULL,
UNIQUE KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Замечу, что у таблиц должен быть один общий столбец, иначе связь между ними нарушится, в данном случае это account_id.
Теперь переносим данные из первой таблицы во вторую:
Код:
mysql> INSERT INTO accounts2 (account_id,is_active,is_affiliate,last_modified,la
st_loggedin,last_updated,time_created) SELECT account_id,is_active,is_affiliate,
last_modified,last_loggedin,last_updated,time_created FROM accounts LIMIT 5000
-> ;
Query OK, 5000 rows affected (0.27 sec)
Records: 5000 Duplicates: 0 Warnings: 0
Когда будешь разбивать таблицу, LIMIT нужно, конечно, убрать.
Теперь осталось лишь удалить ненужные столбцы из первой таблицы:
Код:
ALTER TABLE `accounts` DROP COLUMN `affiliate_id`, DROP COLUMN `site_handle`, DROP COLUMN `default_address`;
...
Последний раз редактировалось [Raz0r]; 22.11.2008 в 20:03..
|
|
|

22.11.2008, 20:15
|
|
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
Провел на форуме: 350782
Репутация:
81
|
|
а сервак такими процедурами не нагружу? ведь у меня там 70000 записей.
|
|
|

22.11.2008, 20:30
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
смотря какой сервак, вообще 70к для MySQL не так уж и много
|
|
|

23.11.2008, 02:48
|
|
Новичок
Регистрация: 19.11.2008
Сообщений: 5
Провел на форуме: 7943
Репутация:
0
|
|
Спасибо Всем, кто помогал советом в моём вопросе. С Вашей помощью и с помощью собственного мышления начал догонять по теме. Начал понимать суть базы данных, дампа данных. Уже поигрался с очисткой таблиц и вставкой данных из дампа. Всё- ок.
Спасибо Всем.
|
|
|

23.11.2008, 20:54
|
|
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
Провел на форуме: 350782
Репутация:
81
|
|
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
|
|
|

23.11.2008, 21:41
|
|
Постоянный
Регистрация: 18.02.2008
Сообщений: 368
Провел на форуме: 4075418
Репутация:
386
|
|
truelamer
http://www.mysql.ru/docs/ имхо лучше не придумать
|
|
|

24.11.2008, 18:05
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Сообщение от truelamer
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
sql-ex.ru  Не сочтите за рекламу - но действительно очень помогает 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|