본문 바로가기
MySql

MySQL CSV에서 MySQL 로의 줄 바꿈 문제

by 베이스 공부 2020. 10. 23.
반응형

.csv 파일을 MySQL로 가져오고 있으며 파일에있는 줄 바꿈을 제외하고 모든 것이 잘 작동합니다.

내 .csv 행 중 하나는 다음과 같습니다.

42,E-A-R™ Classic™ Earplugs,ear,images/ear/classic.jpg,5%,"Proven size, shape, and foam
3M's most popular earplug
Corded and uncorded in a variety of individual packs
NRR 29 dB / CSA Class AL",312-1201,,"E-A-R™ Classic™ Uncorded Earplugs, in Poly Bag",310-1001,,E-A-R™ Classic™ Uncorded Earplugs in Pillow Pack,311-1101,,"E-A-R™ Classic™ Corded Earplugs, in Poly Bag"

여섯 번째 필드 오버는 호출 될 때 새 줄로 분리되어야하지만 그렇지 않습니다. .csv를 가져올 때 다음으로 종료되는 줄 \ r을 선택합니다. 나는 \ n과 자동을 시도했지만 운이 없다.

이상한 점은 필드가 데이터베이스에서 모든 적절한 중단으로 올바르게 보인다는 것입니다. PHPmyadmin에 줄 바꿈을 수동으로 삽입하면 올바르게 인쇄됩니다. 각 필드도 UTF-8로 설정됩니다.

이것에 대한 아이디어가 있습니까? 감사.

수정 : 다음은 MySQL 문입니다.

LOAD DATA LOCAL INFILE '/tmp/php89FC0F' REPLACE INTO TABLE `ohes_flyer_products`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r'

 

해결 방법

 


라인을 따라 뭔가

$fd = fopen($csvfile, "r");
while ($line = fgetcsv($fd))
{
    $sql = sprintf("INSERT INTO tablename (...) VALUES ('%s', ...)", $line[0], ...);
    $res = mysql_query($sql);
}

참고 1 : 코드가 프로덕션에 준비되지 않았습니다. SQL 삽입을 확인하십시오!

참고 2 : 준비된 문을 사용하면 작업 속도가 빨라지므로 하나의 다중 행 삽입 문을 만들 수 있습니다.

참고 3 : 트랜잭션에서 모두 포장하십시오.

 

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

 

 

반응형

댓글