PHP를 통해 CSV 파일을로드하고 임시 테이블에 삽입하는 중, 이것은 PHP 스크립트와 MySQL 쿼리를로드하는 것입니다. 빠른 Mysql 삽입하는 방법 nullif?
$i=0;
while (($data = fgetcsv($source, 1000, ",")) !== FALSE)
{
if($i!=0) {
$column1=$data[0];
$column2=$data[1];
$column3=$data[2];
$column4=$data[3];
$column5=$data[4];
$column6=$data[5];
$query= "INSERT INTO temp_table(column1,column2,column3,column4,column5,column6,load_datetime)
VALUES (nullif('$column1',''), nullif('$column2',''), nullif('$column3',''), nullif('$column4',''), nullif('$column5',''), nullif('$column6',''),now())";
mysql_query($query) or die(mysql_error());
}
$i++;
}
내 CSV 파일이 내가 CSV 및에로드 할 때 내가 직면하고있는 문제는,이 10 분 이상 소요되는 내 CSV
column1,column2,column3,column4,column5,column6
,,,13:57:18,,23:00:19
에서 샘플 행입니다 25000 개 기록, 있다 페이지 사이에 아무 것도 표시되지 않습니다. 내 PHP 설정 : upload_max_filesize : 100M post_max_size : 100M max_execution_time : 1000 max_input_time : 1000.
이 내 테이블 세부
CREATE TABLE temp_table (
id int(11) NOT NULL,
column1 time DEFAULT NULL,
column2 time DEFAULT NULL,
column3 time DEFAULT NULL,
column4 time DEFAULT NULL,
column5 time DEFAULT NULL,
column6 time DEFAULT NULL,
load_datetime datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
와 내가 temp_table을 확인할 때 8000 개 기록 주위에 삽입했다. 더 빨리 삽입하는 방법을 알려주십시오.
이전 지금 '지금()'을 (를) 추가하는 것을 잊었습니다. 도움이되지 않으면 생성 된 SQL'echo $ sql을 출력 해보십시오. implode (',', $ values)'. – Neodan
솔루션은 2 분 미만의 시간이 소요되었으며 25000 개의 레코드가 삽입되었습니다. 정말 고맙습니다. – davidb
@ davidb 1if (++ $ i == 1) 계속 진행하면, 첫 번째 행 건너 뛰기 (-; – Neodan