본문 바로가기
MySql

MySQL PHP 배열을 통해 여러 행을 mysql에 삽입

by 베이스 공부 2020. 9. 28.
반응형

삽입 명령을 사용하여 PHP를 통해 MySQL 테이블에 대용량 데이터 세트를 전달하고 있으며, 1 마일 길이의 문자열 끝에 각 값을 추가하는 것 이외의 쿼리를 통해 한 번에 약 1000 개의 행을 삽입 할 수 있는지 궁금합니다. 그것을 실행합니다. CodeIgniter 프레임 워크를 사용하고 있으므로 해당 기능도 사용할 수 있습니다.

 

해결 방법

 

여러 행으로 하나의 INSERT 문을 어셈블하는 것이 행당 하나의 INSERT 문보다 MySQL에서 훨씬 빠릅니다.

즉, PHP에서 문자열 처리 문제가 발생하는 것처럼 들리는데, 이는 언어 문제가 아닌 알고리즘 문제입니다. 기본적으로 큰 문자열로 작업 할 때 불필요한 복사를 최소화하려고합니다. 주로 이것은 연결을 피하고자 함을 의미합니다. 한 번에 수백 개의 행을 삽입하는 것과 같이 큰 문자열을 만드는 가장 빠르고 메모리 효율적인 방법은 implode () 함수와 배열 할당을 이용하는 것입니다.

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

이 접근 방식의 장점은 지금까지 각 연결로 조합 한 SQL 문을 복사하고 다시 복사하지 않는다는 것입니다. 대신 PHP는 implode () 문에서이 작업을 한 번 수행합니다. 이것은 승리입니다.

조합 할 열이 많고 하나 이상의 열이 매우 긴 경우 동일한 작업을 수행하는 내부 루프를 만들고 implode () 를 사용하여 values ​​절을 외부에 할당 할 수 있습니다. 정렬.

 

참조 페이지 https://stackoverflow.com/questions/779986

 

 

반응형

댓글