#mysql
#mysql
Вопрос:
у меня есть таблица sent_laundry
в базе данных mysql на рабочем сервере со столбцом first_wash
и rewash
, как показано ниже:
first_wash | перепрошивка |
---|---|
121 | 124 |
null | 125 |
я хотел бы изменить структуру, как показано ниже:
wash_type | laundry_id |
---|---|
Первая промывка | 121 |
Перепрошивка | 124 |
Перепрошивка | 125 |
Я пытаюсь добиться:
- перенос структуры таблицы (успешный)
- без потери данных (сбой)
Что я пробовал:
Я изменил столбец таблицы локально и сделал резервную копию. И я восстановил ее в локальном test_scheme
. Теперь таблицы в 2 схемах имеют точно такие же столбцы, как wash_type
и laundry_id
. Но данные в test_scheme
заменены данными в исходной / исходной схеме.
Если я использую тот же способ для восстановления таблицы на рабочем сервере, я потеряю данные своего реального пользователя. Могу ли я узнать практический способ переноса таблицы без потери данных в моем случае?
К вашему сведению: я использую «экспорт данных» в MySQLWorkbench для резервного копирования таблицы. и «импорт данных» в MySQLWorkbench для восстановления таблицы.
Любой, у кого есть идея, пожалуйста, поделитесь со мной.
PS: Извините, я не смог лучше описать свой вопрос. Все еще учусь перефразировать вопрос так, чтобы люди могли лучше понять.
Комментарии:
1. Создайте новую таблицу и замените ею старую таблицу.
Ответ №1:
-- Create new table and fill it with data
CREATE TABLE new_table (wash_type VARCHAR(255), laundry_id INT)
SELECT 'FirstWash' wash_type, first_wash laundry_id
FROM data_table
WHERE first_wash IS NOT NULL
UNION ALL
SELECT 'Rewash', rewash
FROM data_table
WHERE rewash IS NOT NULL;
-- drop old table
DROP TABLE data_table;
-- rename new table
RENAME TABLE new_table TO data_table;
Теперь сделайте резервную data_table
копию на тестовом сервере, удалите существующую таблицу на рабочем сервере и восстановите из резервной копии.
Комментарии:
1. Спасибо за вашу идею, вы указали мне направление. На самом деле у меня больше столбцов в таблице, думаю, мне нужно больше изучить, чтобы заставить sql-скрипт работать. Спасибо.