2012-03-22 3 views
0

이것은 바보 같은 질문처럼 들리지만 잘못된 키워드를 사용하여 Google에서 아무 것도 찾을 수 없습니다.MySQL 테이블을 다시 만들지 않고 데이터 복원

어쨌든, 나는 프로젝트에서 일해 왔습니다. 버전 1에는 MySQL 데이터베이스가 있습니다. 버전 2로 출시 할 준비가되었지만 데이터베이스 테이블이 변경되었습니다 (예 : 여분의 열.

데이터로 현재 데이터베이스를 백업하고 새 구조로 데이터베이스를 만드는 경우. 이전 데이터베이스의 데이터를 새 데이터베이스에 추가하려면 어떻게합니까?

기존 필드가 변경되지 않았기 때문에 새 데이터베이스 구조에 기존 데이터가 추가되는 데 아무런 문제가 없다는 것을 알고 있습니다.

도움 주셔서 감사합니다.

+0

PHP를 사용하면 훨씬 쉽습니다 – hjpotter92

+0

왜 데이터베이스를 다시 만들어야합니까? 아래에 설명 된대로 기존 필드에 열을 추가하는 것만으로는 안됩니다. – Robert

답변

1

, 뭔가 이 경우 컬럼의 순서가 변경 될 수도 있습니다.

1

ALTER TABLE을 사용하여이 문제를 해결하는 것이 좋습니다.

의 핵심은과 같이, 데이터베이스에 새로운 필드를 가지고 당신의 엔티티의 마지막을 추가하는 것입니다 ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)

MySQL이 테이블을 확장하여 사용자가 지정한 기본값으로 새 필드를 설정합니다. 그런 다음 설명하는대로 충돌이없는 한 모든 새 데이터를 이전 데이터 위에 레이어 할 수 있습니다.

옵션 B는 온라인 솔루션이 비싸면 mysqldump을 사용하고 새 테이블 사양에 맞게 출력을 변경합니다. 열이 적절히 정렬되는 한 (최악의 경우 구문 분석을 위해 간단한 정규 표현식이 필요할 수 있음), 데이터를 importing으로 새 스키마에 다시 작성할 수 있어야합니다.

참조 : this answer. 열 이름과 함께 완전한 삽입을 생산, 그래서 당신은하지 않았다 경우 하지가 최종 테이블 구조에 대해 걱정할 수

mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert 

같은 나는이 경우 some addition keysmysqldump를 사용

+0

설명해주세요. – hjpotter92

+1

은 모든 단일 테이블을 검토하고 모든 변경 사항을 개발 시스템과 일치시키기 위해 추가해야합니다. 나는보다 쉬운 1 단계 솔루션을 찾고있었습니다. 나는. 새 데이터베이스 구조를 복원하고 이전 데이터베이스에서 기존 데이터를 가져옵니다. – Boardy

+0

@Boardy 답변을 업데이트하겠습니다. 대기. – MrGomez

관련 문제