0
私は70000レコードを持っているテーブルbook_meetingsを持って、私はこれを少し変更して別のテーブルにこのデータを移行したいMysqlストアドプロシージャを作成しました。レコードは新しいテーブルに挿入されますが、値はnullとして設定されます。 book_meetings
テーブルから4つの列しか選択せず、テーブルに挿入したいとします。私が欲しいもの更新とMysqlのストアドプロシージャを使用してテーブルの行を挿入
id int
date date
meet_at time
duration_in_hours decimal
は、上記の値に基づいてstart_date
とend_date
を計算しています。例えば
:その後、
if date ="2017-09-08" , meet_at is "09:00:00" and duration_in_hours is 1.5
start_date will be "2017-09-08 09:10:00"
end_date= start_date_duration_in_hour
end_date will be "2017-09-08 09:10:00"
start_date = concat date and meet_at
end_date = start_date + duration_in_hours
and insert this values in new table
別の良いアイデアがあるならば、
CREATE PROCEDURE book_meetings8()
BEGIN
-- Declare local variables
DECLARE done BOOLEAN DEFAULT 0;
DECLARE meet_at TIME;
DECLARE start_date DATETIME;
DECLARE tmp_date VARCHAR(255);
DECLARE end_date DATETIME;
DECLARE end_recurring_date DATE;
DECLARE date1 DATE ;
DECLARE id INTEGER(11);
DECLARE duration DECIMAL(8,2);
DECLARE minutes INTEGER(11);
-- Declare the cursor
DECLARE iter CURSOR
FOR
SELECT id,date, meet_at,duration_in_hours FROM
book_meetings LIMIT 100;
-- Declare continue handler
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
-- Open the cursor
OPEN iter;
-- Loop through all rows
REPEAT
-- Get order number
FETCH iter INTO id,date1,meet_at,duration;
SET minutes = duration * 60;
SET start_date = CAST(date1 as char) + " "+CAST(meet_at as
char);
SET end_date = CAST(start_date as datetime) + INTERVAL
minutes MINUTE;
INSERT INTO
book_meetings_1(start_date,end_date)
VALUES(start_date,end_date);
-- End of loop
UNTIL done END REPEAT;
-- Close the cursor
CLOSE iter;
END;