HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #351  
Старый 22.11.2008, 19:22
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

Сделать дамп таблицы через phpmyadmin, создать новую таблицу с нужными условиями на основе дампа, сделать процедуру вставки в новую таблицу старых данных на основании новых условий, вставить данные, удалить старую таблицу, переименовать новую таблицу как старую, изменить те участки кода в двиге, где происходит обращение к полям из этой таблицы. Всё
 
Ответить с цитированием

  #352  
Старый 22.11.2008, 19:41
truelamer
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
С нами: 9742875

Репутация: 81
По умолчанию

ясен красен что так можно. Дампить не вариант, надо прям на сервере что-то сделать. А как? Писать скрипт которыйе будет селектить из старой и инсертить в новыю таблицу, но тогда сервак умерет от 70000 инсертов
 
Ответить с цитированием

  #353  
Старый 22.11.2008, 19:45
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

А по другому никак. Чтобы не умер - делай паузу в 10 секунд например перед каждым апдейтом. Через денек всё и пропишется
 
Ответить с цитированием

  #354  
Старый 22.11.2008, 19:59
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
С нами: 10109126

Репутация: 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..
 
Ответить с цитированием

  #355  
Старый 22.11.2008, 20:15
truelamer
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
С нами: 9742875

Репутация: 81
По умолчанию

а сервак такими процедурами не нагружу? ведь у меня там 70000 записей.
 
Ответить с цитированием

  #356  
Старый 22.11.2008, 20:30
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
С нами: 10109126

Репутация: 1980
По умолчанию

смотря какой сервак, вообще 70к для MySQL не так уж и много
 
Ответить с цитированием

  #357  
Старый 23.11.2008, 02:48
Zyklonss
Новичок
Регистрация: 19.11.2008
Сообщений: 5
С нами: 9197033

Репутация: 0
По умолчанию

Спасибо Всем, кто помогал советом в моём вопросе. С Вашей помощью и с помощью собственного мышления начал догонять по теме. Начал понимать суть базы данных, дампа данных. Уже поигрался с очисткой таблиц и вставкой данных из дампа. Всё- ок.
Спасибо Всем.
 
Ответить с цитированием

  #358  
Старый 23.11.2008, 20:54
truelamer
Участник форума
Регистрация: 06.11.2007
Сообщений: 143
С нами: 9742875

Репутация: 81
По умолчанию

Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
 
Ответить с цитированием

  #359  
Старый 23.11.2008, 21:41
warlok
Постоянный
Регистрация: 18.02.2008
Сообщений: 368
С нами: 9594385

Репутация: 386
По умолчанию

truelamer
http://www.mysql.ru/docs/ имхо лучше не придумать
 
Ответить с цитированием

  #360  
Старый 24.11.2008, 18:05
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
С нами: 10143686

Репутация: 526
По умолчанию

Цитата:
Сообщение от truelamer  
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
sql-ex.ru Не сочтите за рекламу - но действительно очень помогает
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сетевой этикет (Перед тем, как задать вопрос хакеру) satana-fu Статьи 7 21.10.2009 07:40
Ответы на часто задаваемые вопросы + линки на статьи по SQL/XSS/PHP-инклуд Jokester Уязвимости 2 28.06.2009 00:19
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору. Комиссия форума: 2%.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...