2011-10-10 2 views
1

나는 수천 개의 데이터를 엑셀 시트로 읽는 PHP 스크립트를 만들었습니다. &은 삽입 쿼리를 통해 MySQL 데이터베이스에 모든 데이터를 추가합니다. 이제 문제는 엑셀 시트의 데이터가 수천에서 수백만으로 바뀌 었다는 것입니다. 이제이 스크립트를 실행하는 동안 시간 초과가 발생합니다. 시간 초과없이 모든 쿼리를 실행하는 가장 좋은 해결책이 무엇인지 알고 싶습니까?Bulk mysql 쿼리를 성공적으로 실행하는 방법은 무엇입니까?

또 다른 한가지는 웹 호스팅에서이 스크립트를 사용하여 매우 적은 수의 레코드에서 시간 초과가 종료되었으므로 나중에 로컬 WAMP 서버 &에서이 스크립트를 실행하여 호스팅보다 많은 레코드를 저장했지만, 그러나 그것은 여전히 ​​시간 초과되었다. 따라서이 솔루션이 온라인 & 로컬 서버에서 작동 할 수 있다면 가장 좋을 것입니다.

+0

스크립트 자체를 보여줄 수 있습니까? –

+0

또한 살펴보십시오. http://stackoverflow.com/questions/7318768/process-very-big-csv-file-without-timeout-and-memory-error –

+0

http://blog.tjitjing.com/index .php/2008/02/import-excel-data-into-mysql-in-5-easy.html – rahularyansharma

답변

1

내가 내 스크립트 사용이 :

ini_set("memory_limit", "-1"); 
set_time_limit(0); 
+0

너는 나의 날을 구했다. D – Mathlight

1

당신은 수백만 개의 행이있는 경우, 당신은 수 있습니다 당신이 INSERT를 실행하는 경우, 또한 LOAD DATA INFILE에서 살펴 SQL보다 효율적으로 올바른 도구를 사용하지 마십시오.

가능하면 LOAD DATA INFILE (docs) 함수를 사용하는 것이 좋습니다.이 함수는 csv 파일을 직접 받아 들일 수 있습니다. 그렇게하면 삽입을 위해 PHP 레이어를 건너 뛸 수 있습니다. 데이터베이스에 파일을 추가하기 전에 파일을 계속 처리해야하는 경우 데이터를 필요한 형식으로 변환하고 csv에 저장 한 다음 위에서 언급 한 기능을 사용할 수 있습니다.

관련 문제