0

I have two database old.sql & new.sql.

I have user table named user in new.sql. and users in old.sql.

table structure for user from new.sql

--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
 `id` int NOT NULL AUTO_INCREMENT,
 `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 `firstName` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 `lastName` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 `phoneNumber` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 `role` enum('USER','ADMIN') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'USER',
 `createdOn` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
 PRIMARY KEY (`id`),
 UNIQUE KEY `User_email_key` (`email`),
 UNIQUE KEY `User_phoneNumber_key` (`phoneNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

and users from old.sql

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `users` (
 `id` int NOT NULL AUTO_INCREMENT,
 `roleId` int NOT NULL,
 `firstName` varchar(255) DEFAULT NULL,
 `lastName` varchar(255) DEFAULT NULL,
 `email` varchar(255) NOT NULL,
 `password` varchar(255) DEFAULT NULL,
 `status` tinyint(1) DEFAULT '1',
 `resetPasswordExpires` datetime DEFAULT NULL,
 `resetPasswordToken` varchar(255) DEFAULT NULL,
 `createdAt` datetime NOT NULL,
 `updatedAt` datetime NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`),
 KEY `roleId` (`roleId`),
 CONSTRAINT `Users_ibfk_1` FOREIGN KEY (`roleId`) REFERENCES `roles` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=884 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

now I want to migrate user from old database to new database. this is only one table, we have many tables to migrate data.

how can I achieve that ?

asked Dec 27, 2021 at 6:56

1 Answer 1

1
INSERT INTO user
 ( ... ) -- new column names
 SELECT ... -- old col names / NULL / expressions
 FROM users;

The first ... is the list of columns that you can map easily (eg, firstName), not id (because it is AUTO_INCREMENT; such will get new numbers), etc.

The second ... would be simple column names (eg, firstName) or expressions like IF (role = 3, 'USER', 'ADMIN'). It would exclude things like status.

answered Dec 27, 2021 at 20:05

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.