2015-01-22 1 views
0

나는 지역, 국가, 도시 및 거리 정보를 담고있는 4 개의 거대한 mysql 테이블을 가지고 있으며 PHP 코드로 적절하게 호출 할 수 있습니다. 그래서 내가하고 싶은 것은 그것들을 하나의 테이블에 병합하는 것입니다. 예를 들어 아래 그림과 같이 나는mysql 문장을 값으로 특정 숫자를 더하는 것으로 변환하는 방법

insert into `table1`(`region_id`,`name`) values (1,'region1'),(2,'region2'),(3,'region3'); 
insert into `table2`(`country_id`,`region_id`,`name`) values (1,1,'country1'),(2,1,'country2'),(3,1,'country3'); 
insert into `table3`(`city_id`,`country_id`,`name`) values (1,1,'city'),(2,1,'city2'),(3,1,'city3'); 
insert into `table4`(`street_id`,`city_id`,`name`) values (1,1,'street1'),(2,1,'street2'),(3,1,'street3'); 

내가, 내가 달성하기 위해 정규 표현식, 나오지도 또는 유사한을 사용해야하지만 다음과 같이 쉬운 방법은 라인을 변환 할 것이라고 그림을했습니다, 모든 값에 이미 데이터가 내 목표. 할 수만 있다면 PHP 코드로이 구조체를 호출 할 것입니다.

insert into `table`(`id`,`name`) values (1,'region1'),(2,'region2'),(3,'region3'); 
insert into `table`(`id`,`parent_id`,`name`) values (1001,1,'country1'),(1002,1,'country2'),(1003,2,'country3'); 
insert into `table`(`id`,`parent_id`,`name`) values (5001,1001,'city1'),(5002,1001,'city2'),(5003,1002,'city3'); 
insert into `table`(`id`,`parent_id`,`name`) values (10001,5001,'street1'),(10002,5001,'street'),(10003,5002,'street3'); 

위와 같이 값을 변환 할 수있는 방법이 있습니까? 아니면 더 좋은 방법이 있습니까? 사전에
감사합니다,

+0

왜'sed'를 사용 하는가? 왜 그냥 SQL 문을? 'region.name, country.name, city.name, street.name을 region, country, city, street에서 선택하십시오. region.region_id = country.region_id 및 country.country_id = city.country_id 및 city.city_id = street.street_id? ' – qqibrow

+0

난 이미 특정 소프트웨어에 대한 포괄적 인 PHP 코드를 가지고 있기 때문에 하나의 테이블에보다는 전체 PHP 코드를 변경 SQL 문을 쉽게 변환 할 수 있습니다. 그래서 내가 모든 데이터를 하나의 테이블에 넣어야합니다. – Egemen

+0

당신은 그 mysql 서버에 액세스 할 수 있습니까? – qqibrow

답변

0
sed 's/`table[^`]*`/`table`/;s/`[^_`]*_id`/`id`/' YourFile 

변화 : - 테이블 에 처음 tablexxx - 첫번째 필드 _ID ID로

은 인해하지 일반적으로 ([가`] 해석되지 않습니다 당신의 쉘에서 확인 간단한 인용 arround에

관련 문제