programing

로드 데이터 로컬 INFILE을 사용하여 n-to-n 관계 채우기

testmans 2023. 8. 28. 20:53
반응형

로드 데이터 로컬 INFILE을 사용하여 n-to-n 관계 채우기

데이터베이스에 있는 제품의 이미지를 다운로드하는 스크립트 파일이 있습니다.파일이 작동 중인 제품은Products테이블. 테이블의 각 행(즉, 각 제품)에는 다운로드해야 하는 이미지가 하나 이상 있을 수 있습니다.

지금까지 다운로드된 이미지는 별도의 테이블에 저장되었습니다.ProductImages각각의 다운로드된 이미지는 외부 키를 통해 제품 데이터베이스로부터 하나의 제품에 연결되었습니다.ProductImages테이블은 다운로드된 이미지 파일의 경로를 저장하고 있었고, 그 외에도 다운로드된 이미지에 대한 메타 정보도 저장하고 있었습니다.

우리는 제품용 이미지 외에도 데이터베이스에 저장해야 하는 다른 이미지도 있다는 것을 깨달았습니다. 그래서 저는 이미지와 관련된 정보를 분리하려고 합니다.ProductImages테이블, 별도로Images테이블, 차례로 다시 연결됩니다.Product테이블, 관계형 테이블을 통해.

문제는 다운로드 받은 이미지와 해당 데이터를 데이터베이스에 추가하는 것입니다.속도를 높이려면 의 행을 사용합니다.ProductImages테이블이 데이터베이스에 일괄적으로 삽입되었습니다.LOAD DATA LOCAL INFILEcall: 내 스크립트는 어떤 이미지가 어떤 제품에 속하는지 알고 있으므로 스크립트 메모리의 데이터에서 CSV 파일을 작성한 다음 해당 파일을 데이터베이스에 로드합니다.

그러나 새로운 데이터베이스 구조를 사용하면 먼저 이미지 정보를 별도의 테이블에 로드해야 합니다(MariaDB가 각 이미지에 고유한 자동 증분 기본 키를 할당합니다). 그런 다음 관계 테이블을 다음과 같은 관계로 채웁니다.Products그리고.Images문제는 삽입된 각 이미지와 연관된 기본 키를 미리 알지 못하기 때문에 더 이상 관계형 테이블을 채울 수 없다는 것입니다.

제 유일한 아이디어는 도우미 열을 삽입하는 것이었습니다.Images테이블, 내 다운로더 스크립트에 의해 생성된 고유 ID로, 관계를 채우는 데 사용될 수 있지만, 내게는 이것이 조금 더럽게 보입니다.제가 계속 사용할 수 있는 다른 방법이 있습니까?LOAD DATA LOCAL INFILE관계 테이블도 채웁니까?

언급URL : https://stackoverflow.com/questions/68338369/using-load-data-local-infile-to-populate-n-to-n-relationship

반응형