programing

다른 데이터베이스에 있는 하나의 데이터베이스에서 MySQL

lovejava 2023. 9. 1. 20:20

다른 데이터베이스에 있는 하나의 데이터베이스에서 MySQL

데이터베이스 간에 데이터를 마이그레이션해야 합니다. 둘 다 동일한 로컬 시스템에 있습니다.

테이블과 열 이름이 달라 이전 데이터베이스에서 모든 열을 마이그레이트할 수 없습니다.

Select *저한텐 안 통해요

INSERT INTO newDatabase.table1(Column1, Column2);
SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1

하지만 내가 가진 것은#1064 - Syntax Error

내 쿼리의 오류는 무엇이며 어떻게 해결할 수 있습니까?

잘 부탁드립니다.

쿼리는 다음과 같습니다.

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT column1, column2 FROM oldDatabase.table1;

갱신하다

이 답변은 제가 예상했던 것보다 더 많은 관심을 받고 있기 때문에, 저는 이 답변을 확대해야 합니다.우선, 답 자체로는 분명하지 않을 수 있지만, 열 이름이 같을 필요는 없습니다.따라서 다음과 같은 방법도 사용할 수 있습니다(열이 각 테이블에 있다고 가정).

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;

게다가, 그것들은 표에 실제 열이 될 필요도 없습니다.제가 자주 사용하는 데이터 변환의 예 중 하나는 다음과 같습니다.

INSERT INTO newDatabase.users (name, city, email, username, added_by) 
SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;

따라서 지금은 더 명확하게 알 수 있지만, 규칙은 SELECT 쿼리가 INSERT 쿼리에 필요한 동일한 수의 열을 반환하는 한 VALUEs 대신 사용할 수 있다는 것입니다.

INSERT INTO db1.table SELECT * FROM db2.table;

다른 DB의 동일한 테이블에 데이터를 복사하려는 경우.

테이블과 열의 이름이 서로 다릅니다.라고 말했지만 동일한 이름을 사용했습니다.사용해 보십시오.

INSERT INTO newDatabase.newtable1 (newColumn1, newColumn2) 
SELECT oldcolumn1, oldcolumn2 FROM oldDatabase.oldtable1;
CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table 
SELECT column_name FROM db1.table

언급URL : https://stackoverflow.com/questions/22912167/mysql-insert-into-from-one-database-in-another