2016-06-20 6 views
0

지난 달에 mysqldump에서 데이터베이스 파일을 가져 왔습니다. 이제 데이터베이스의 모든 테이블에 다음과 같이 추가 열이 추가됩니다.mysql : insert에 대한 열 기본값을 설정합니다.

country varchar(20) not null. 

"US"로 설정된 국가의 데이터베이스로 덤프 파일을 가져 오는 방법은 무엇입니까? 데이터베이스에는 다른 국가의 데이터가 있으므로 데이터베이스를 삭제하고 다시 만들 수 없습니다.

1. remove all create table statements, 
2. add country("US") to all insert statements. 

그러나 SQL 덤프 파일은 거대하다 :

수동 나는 덤프 SQL 파일에 두 가지를 할 필요가있다. 이것을 달성하기위한 좋은 방법이 있습니까? 감사합니다. .

+1

는 덤프 파일을 바로 열'country'를 포함하지 않는 이유는 무엇입니까? 그리고'US' 값을 가진 모든 테이블에'country' 칼럼을 추가하고 싶습니까? 내가 맞습니까? – 1000111

+0

가장 깨끗한 방법은'country' 칼럼의 기본값으로 설정 될 수 있지만,'ALTER TABLE' 문을 사용할 수 있어야하며,'US' 값은 모든 사람들에게 바람직하다는 것입니다. –

+0

이것과 관련된 N 개의 테이블을 찾고 다른 파일 이름으로 덤프를 복사하십시오. 그 N에 대한 새로운 테이블 이름을 찾기 및 바꾸기로 테이블 이름을 조정하십시오. 새 테이블 이름이됨을 참고하십시오. 해당 스크립트를 실행하십시오. 이제 귀하의 DB는 N 개의 새로운 테이블을 미국에만 있습니다. 발하다. 계속해서 (예를 들어, 다른 테이블에 삽입하는 것과 같이) 삽입 할 때 리터럴로 미국을 사용한다면? – Drew

답변

0

ALTER 표 your_table ADD 국가 VARCHAR (20) 기본 "미국"

+0

데이터베이스가 웹 응용 프로그램에서 실행되고 있으며 많은 사용자가 동시에 액세스하고 있습니다. . 약 200 개의 테이블이 필요합니다. 테이블을 충분히 바꾸어도 안전합니까? 덤프 된 SQL 파일을 처리 할 수있는 프로그래밍 방식 (도구)이 있습니까? 감사. – Dave

+0

나는 alter_table이 최선의 선택이라고 생각한다. 사용자가 적은 시간 내에 작업을 수행하고 로그를 사용하여 덤프 순간부터 쿼리를 등록하십시오. 스크립트를 사용하여 모든 테이블을 반복하고 업데이트 할 수 있습니다. 작업 로그가 없다면 유닉스에서 diff를 사용하여 두 파일의 차이점을 비교하고 차이점을 저장하고 쿼리에 업데이트 된 DB가 있도록 할 수 있습니다 – CiroRa

관련 문제