I am trying to copy data from one table to another schema. But while copying the content I am struggling to fill foreign key values in the second database. Let's say the table (from which I'm trying to copy the data) is-
Sample_
| v1 | v2 | v3 | v4 |
|---|---|---|---|
| 1 | 5 | 'A1' | 'B2' |
| 2 | 6 | 'A1' | 'B1' |
| 3 | 7 | 'A1' | 'B2' |
| 4 | 8 | 'A2' | 'B2' |
Now, I have created another schema which has 3 tables:
main_
| idx | v1 | v2 | v3_id | v4_id |
|---|
V3_
| v3_id | v3 |
|---|---|
| 1 | 'A1' |
| 2 | 'A2' |
V4_
| v4_id | v4 |
|---|---|
| 1 | 'B1' |
| 2 | 'B2' |
I have filled V3_, and V4_ but I haven't been able to fill main_ because of an error. I'm using loop to fill the values. I have ran the following code.
CREATE PROCEDURE ROWPERROW()
BEGIN
DECLARE n INTEGER DEFAULT NULL;
DECLARE i INTEGER DEFAULT NULL;
SELECT COUNT(*) FROM sample_ INTO n;
SET i=0;
WHILE i<n DO
INSERT INTO main_(v1, v2) SELECT (v1, v2) FROM sample_ LIMIT i,1;
INSERT INTO main_(v3) SELECT v3_id FROM V3_ WHERE V3_.v3=SELECT v3 FROM sample_ LIMIT i, 1;
INSERT INTO main_(v4) SELECT v4_id FROM V4_ WHERE V4_.v4=SELECT v4 FROM sample_ LIMIT i, 1;
SET i = i + 1;
END WHILE;
End;
;;
Error message:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT v3 FROM sample_ LIMIT i, 1; INSERT INTO main_(v4) SELECT v4_id FRO' at line 9
I don't understand why it is showing syntax error. Also, is there a better way to copy data from a one schema to another?
I want main_ to look like this-
main_
| idx | v1 | v2 | v3_id | v4_id |
|---|---|---|---|---|
| 1 | 1 | 5 | 1 | 2 |
| 2 | 2 | 6 | 1 | 1 |
| 3 | 3 | 7 | 1 | 2 |
| 4 | 4 | 8 | 2 | 2 |