2013-02-14 3 views
0

긴 CSV 테이블을 가져 와서 효율성을 위해 두 테이블로 변환하는 가장 좋은 방법에 대한 질문이 있습니다. 매우 축소 된 버전이지만이 용도로 적합합니다.큰 데이터 가져 오기 변환

각 행은 고유 한 레코드이지만 처음 세 열은 많은 양의 행에 대해 매우 일관된 데이터로 구성됩니다.

내가이 데이터를 관리 할 수있는 가장 좋은 방법을 생각하는 두 개의 테이블을 구축하는 것이 었습니다 :

최초의 자동 증가 id 필드와 처음 세 열의에 의해 그룹 인.

이렇게하면 내 데이터의 주요 그룹을 요약 할 수 있습니다.

두 번째 테이블은 모든 행 이었지만 모든 반복 된 데이터를 보유하는 대신 첫 번째 테이블로 가져올 때 자동 증가 ID 필드와 함께 변수 데이터 열 d, e 및 f 만 보유합니다.

제 질문은 실제로 첫 번째 테이블에서 ID를 얻는 방법입니다. ID를 찾고 다시 두 번째 테이블에 삽입하는 유일한 방법입니다.

a,b,c,d,e,f 

09/02/2013,A1,1,18503112043123,11,2.1219 
09/02/2013,A1,1,44102576116476,73,14.0817 
09/02/2013,A1,1,66918345446536,134,25.8486 
09/02/2013,A1,2,62009507978229,10,1.929 
09/02/2013,A1,2,92278593945574,55,10.6095 
09/02/2013,B1,1,50474606002324,90,17.361 
09/02/2013,B1,1,59697581427675,7,1.3503 
09/02/2013,B1,1,86298530583467,51,9.8379 
09/02/2013,B1,2,34885481077847,80,15.432 
09/02/2013,B1,2,25479347211047,164,31.6356 
09/02/2013,B1,3,56270556524425,6,1.1574 
09/02/2013,C1,1,57680166803098,24,4.6296 
09/02/2013,C1,1,72778510788287,77,14.8533 
09/02/2013,C1,1,26084111080146,140,27.006 
09/02/2013,C1,1,31435464483578,361,65.5937 
09/02/2013,C1,2,29457756254473,492,89.3964 
09/02/2013,C1,2,68414218104066,293,53.2381 

편집

나는 마음에 두 가지 질문이 : 1 :에 의해 테이블 ​​ 그룹에서 c를, 자동 증가를 parent_table 선택 널 (null), A, B에 삽입을 가지고 내 부모 테이블 , b, c

  1. 내 모든 데이터 행이지만 상위 테이블의 해당 자동 증분 ID를 포함하는 내 하위 테이블.

나는

답변

1

당신은

를 검색 할 PDO::lastInsertId 또는 mysqli::$insert_id를 사용할 수있는 자식 테이블에 내가 입력으로 다시 부모 테이블에 데이터를 쿼리를 수행하지 않고 ID를 다시 당겨하는 방법을 이해 해달라고

마지막 쿼리에서 자동으로 생성 된 ID입니다.

그냥 삽입을하고 다음

$sth = $pdo->prepare("insert into first_table (a, b, c) values (?, ?, ?)"); 
$sth->execute(array('2013-02-09', 'A1', 1)); 
$id = $pdo->lastInsertId(); 

또한 MySQL을 LAST_INSERT_ID()이 ID를 가져옵니다. 너는 시험 할 수 있었다

insert into second_table (first_table_id, d, e, f) values (LAST_INSERT_ID(), ...) 

그러나 나는 결코 이것을 시도하지 않았다.

+0

OK - 그래서 내 최선의 방법은 MySQL을 직접하지 않는 PHP를 통해 이것을하는 것입니다. 이것은 행 단위로 데이터를 반복하는 것을 의미하지 않습니다. – user1479891

+0

@ user1479891 mysql의 last_insert_id()도 있습니다. 업데이트 된 답변을 참조하십시오. –

관련 문제