2011-01-17 4 views
0

작은 테이블로 분할하려는 mysql 테이블이 있습니다. 나는 1 - 199과 200 - 299와 같은 범위의 데이터를 분해하여 새로운 테이블에 넣고 싶다. 어떻게하면 mysql 커맨드 라인 툴에서이 작업을 할 수 있을까요?mysql 명령 줄 도구를 사용하여 큰 테이블을 더 작은 여러 테이블로 분할하는 방법은 무엇입니까?

+0

관심이 있으신 분 * 왜 *이 *할까요? –

+0

표는 제품과 일치하는 프로파일 번호 목록입니다. 제 경우에는 0 - 199 케이싱 (목재 트림) 프로파일입니다, 200 - 299는 기본 프로파일입니다. 그래서 각 카테고리가 자신의 테이블을 갖는 것이 더 낫다는 것을 알았습니다. 매번 전체 테이블을로드하는 대신에 원하는 것은 케이싱 일뿐입니다. 당신의 생각? – gregh

+0

@ ghostz00 관련된 다양한 스키마에 대해 더 많이 알지 못해서 알기가 어렵습니다. 그러나 기존 테이블이 관련없는 항목 (예 : 대문자! = 기본 프로필)을 저장하는 데 사용되고 있다고했기 때문에 사물의 웅장한 계획에서 옳은 일을하고있는 것처럼 들립니다. . :-) –

답변

0

이 작업을 수행하는 가장 쉬운 방법은 mysqldump을 사용하여 기존 테이블 스키마 및 데이터를 내보내는 것입니다. ("--complete-insert"옵션을 사용하는 것이 좋습니다.)

그런 다음 관련 테이블 생성 문을 추가하고 INSERT 행을 편집하여 결과 파일을 수동으로 편집하여 적절한 테이블 이름을 사용할 수 있습니다.

덧붙여 :

은, 관련 당신이 편집을 수행하는 동안 원래의 테이블에 추가되는 데이터의 조심하지 않을 수 있습니다 동안
  1. 이 모두가 소리 경우 비트 매뉴얼과 고통스러운, 그 때문입니다. 그러나 여기에는 상당히 이상한 요구 사항이 있습니다.

0

최대 범위 밖으로 그림은, 그것은 그러나, 하지 않습니다 만

for i in $(seq 0 100 10000) ; do 
    echo "create table Table$i like MyTable" | mysql mydb 
    echo "insert into Table$i select * from MyTable where id >=$i and id < $(($i+100))" | mysql mydb 
done 

말할. 이런 식으로 데이터를 분리 할 이유는 거의 없으며 질의하는 것이 더 어렵고 관리가 더 힘들어 질 것입니다. 누구든지 (당신 일 수도 있습니다) 데이터베이스/애플리케이션을 유지하려고하는 사람은 결국 화를 낼 것입니다.

관련 문제