2011-12-01 4 views
0

데이터가있는 mysql 데이터베이스가 있습니다. 데이터베이스 테이블 구조를 변경하고 싶습니다. (일부 테이블에 새로운 컬럼을 추가하기 위해 새로운 테이블을 추가합니다.) 데이터베이스에 데이터를 저장하는 것은 가능하며 괜찮습니다. 하지만 이전 데이터베이스에서 새로운 수정 된 데이터베이스로 데이터를 내보내려고합니다. 즉, 데이터가없는 데이터베이스의 구조를 가지고 있으며 테이블을 변경하고 데이터베이스에 새 테이블을 추가합니다. 그런 다음 데이터를 내보내려고합니다. 이전의 데이터베이스)를 새로운 수정 된 데이터베이스에 추가 할 수 있습니다. 여기 하나씩 테이블을 내보낼 수 있습니다. 그러나 더 많은 테이블과 열이있는 경우 어떻게 하나의 PC와 하나의 MySQL 서버에서이 작업을 수행 할 수 있습니까? 당신은 DDL 문 (-t 옵션)뿐만 아니라 사용 완전한 삽입 (-c 옵션) mysqldump를 사용하고 생략하면mysql 데이터를 새 데이터베이스 구조로 전송

답변

1

, 당신은 이전 테이블의 데이터를 가지고 문제없이 새 테이블에 삽입 할 수 있어야한다.

그러나 이것은 테이블/필드의 이름/유형을 변경하지 않고 단순히 새로운 + 다른 필드를 추가하는 것으로 간주됩니다. 테이블 이름 및/또는 필드 이름을 변경하는 경우 덤프를 별도의 임시 데이터베이스로 가져오고 새 필드 매핑을 지정할 수있는 insert ... select from 유형 쿼리를 수행하는 것이 좋습니다.


$ mysqldump -p -t -c name_of_db table1 table2 table3 ... > dump.sql 
$ mysql -p name_of_other_db < dump.sql 

-p = (MySQL의 사용자 이름은 사용자의 시스템 로그인의 사용자 이름과 일치하지 않을 경우 사용자 이름 -u를해야 할 수도 있습니다) 암호 확인
-t = 테이블 생성을
-c를 건너 = 전체 삽입 사용

+0

감사합니다. 데이터가있는 열 이름이나 테이블 이름을 변경하지 않고 새 열만 추가합니다. 샘플 코드로 mysqldump에 대해 더 자세히 설명해 주시겠습니까? –

+0

대단히 감사합니다. 자세한 설명을 부탁드립니다. –

+0

새 테이블 열 순서가 'id', 'age', 'name'이고 내보내기 후에 이전 데이터베이스의 'id'열의 데이터가 새 데이터베이스의 'id'열로 이동하고 ' 이전 데이터베이스의 '이름'열은 새 데이터베이스의 '이름'열로 이동하고 중간 열은 'null'로 남아있을 수 있습니다. 맞습니까? (테이블의 열 순서 변경이 효과적이지 않습니다) –

관련 문제