Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
m1namoto
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 51
1

Перенос БД

06.07.2012, 01:45. Просмотров 712. Ответов 0
Метки нет (Все метки)

Здравствуйте, обрисую вкратце мою ситуацию: есть программа, которая хранит данные в динамической памяти(при работе), а при выходе сохраняет в бинарник. Структура в ней - 5 уровней списков записей. В виду желания освоить MySQL, решил перевести эти базы, а так как информации накопилось много, переписывать вручную - не вариант.
Проведенные действия:
1. Записал все в текстовик по полям.
2. С помощью LOAD DATA перевел всё в одну большую таблицу.
3. Чтобы разбить необходимые 5 таблиц в голову пришла такая идея:
Сделать временные таблицы для каждого уровня(с автоинкрементом чтобы всё по порядку шло), а дале при помощи цикла обработать COUNT(<общая таблица>) записей. Но получается многоэтажная, страшноватая для новичка картина:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- Сдесь добавление второго уровня(добавляются марки машин, делая связь с клиентом)
CREATE PROCEDURE sp_insert()
BEGIN
DECLARE i int DEFAULT '1';   -- счетчик для временной таблицы
DECLARE q int DEFAULT '0';  -- счетчик для общей таблицы
WHILE i<COUNT(only_client) DO
 
INSERT INTO table_mark(mark, parent_id) 
 
SELECT mark, i FROM all_in
WHERE (SELECT fio FROM only_cient where id=i) = (SELECT fio FROM all_in LIMIT q, 1)
 
set i = i+1;
set q = q+1;
END WHILE;
END;
Прошу вашего совета в какую сторону копать или, возможно, есть способы попроще. Вообщем, заранее благодарен.

Добавлено через 3 часа 14 минут
Немного переделал, теперь вроде бы всё правильно делает, но почему не в полном объеме.
Вот код:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
delimiter |
CREATE PROCEDURE sp_insert()
BEGIN
DECLARE i int DEFAULT 1; -- счетчик для временной таблицы
DECLARE q int DEFAULT 0; -- счетчик для общей таблицы
WHILE i<83 and q<567 DO
 
IF (SELECT fio FROM only_client where id=i) = (SELECT fio FROM all_in limit q, 1)
THEN 
INSERT INTO only_car(mark, parent_id) 
SELECT mark, i FROM all_in limit q, 1; 
set q = q+1;
ELSE
set i = i+1;
 
END IF;
END WHILE ;
END
|
Вместо желаемых 567 записей получаю всего 229. Пожалуйста, укажите где я прокололся.

Добавлено через 4 часа 16 минут
РЕШЕНО
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 01:45
Ответы с готовыми решениями:

Перенос БД
Простите за глупости, помогите! Чтение гугла в течение дня мне на пользу не пошло. На линуксовой...

Перенос пользователей
Всем привет! Добавляю так: GRANT SELECT ON mybase.* TO 'username'@&quot;%&quot; IDENTIFIED BY 'password'...

Перенос сервера
Добра. Был у меня xampp. Нужен из него мне был только mysql. Я оставил файлы, прикреплённые на...

Перенос БД MSSQL на MySQL
Подскажите господа бесплатную утилитку, или ссылочку на крякнутую платную _) Заранее спасибо)

Перенос базы данных
Нужно перенести базу данных с сайтом с одного компьютера на другой. Нажал экспорт базы данных,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 01:45

Перенос БД на другой сайт
доброго времени суток! Переносил с компьютера на др. сайт с флешки. перенес на Apache одну папку...

перенос БД с хостинга на опенсервер
здравствуйте. установил заново опен сервер, залил сайт для полного редактирования скачав его с...

Перенос структуры базы
Привет, All. Подскажите как перенести структуру базы с одного MSSQL сервера на другой. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru