테이블의 열을 하나만 업데이트하도록 CSV 가져오기
다음과 같은 테이블이 있습니다.
products
--------
id, product, sku, department, quantity
이 테이블에는 약 800,000개의 항목이 있습니다.다음과 같은 각 제품의 모든 수량을 업데이트하는 새로운 CSV 파일을 받았습니다.
productA, 12
productB, 71
productC, 92
따라서 약 750,000개의 업데이트가 있습니다(50,000개의 제품은 수량에 변화가 없었습니다).
제 질문은 이 CSV를 어떻게 가져오면 다음을 기반으로 수량만 업데이트할 수 있습니까?product
하지만 내버려 둬.sku
,department
그리고 다른 분야들만?CSV를 루프하고 각 라인에 대해 업데이트를 실행하여 PHP에서 이 작업을 수행하는 방법을 알고 있지만 비효율적인 것 같습니다.
를 사용하여 800,000 행의 데이터를 임시 테이블로 대량 로드한 다음 다중 테이블 구문을 사용하여 기존 테이블을 임시 테이블에 결합하고 수량 값을 업데이트할 수 있습니다.
예:
CREATE TEMPORARY TABLE your_temp_table LIKE your_table;
LOAD DATA INFILE '/tmp/your_file.csv'
INTO TABLE your_temp_table
FIELDS TERMINATED BY ','
(id, product, sku, department, quantity);
UPDATE your_table
INNER JOIN your_temp_table on your_temp_table.id = your_table.id
SET your_table.quantity = your_temp_table.quantity;
DROP TEMPORARY TABLE your_temp_table;
업데이트 데이터를 별도의 테이블에 로드합니다.UPDATE_TABLE
다음을 사용하여 MySQL에서 업데이트를 수행합니다.
UPDATE PRODUCTS P SET P.QUANTITY=(
SELECT UPDATE_QUANTITY
FROM UPDATE_TABLE
WHERE UPDATE_PRODUCT=P.PRODUCT
)
나는 지금 MySQL을 가지고 있지 않기 때문에 구문을 완벽하게 확인할 수 있습니다. 아마도 당신은 추가해야 할 것입니다.LIMIT 0,1
내면까지SELECT
.
@ike-walker의 답변은 정확하지만 CSV 데이터가 포맷된 경우에는 어떻게 해야 하는지 다시 확인해야 합니다.예를 들어 CSV 파일에는 여러 번 큰따옴표로 묶인 문자열 필드가 있을 수 있습니다."
그리고 다음으로 끝나는 줄\r\n
윈도우즈에서 작업하는 경우.
기본적으로 둘러싸는 문자는 사용되지 않으며 줄 끝은\n
더 많은 정보와 예제는 여기 https://mariadb.com/kb/en/importing-data-into-mariadb/ 에서 확인할 수 있습니다.
이 문제는 다음에 대한 추가 옵션을 사용하여 해결할 수 있습니다.FIELDS
그리고.LINES
CREATE TEMPORARY TABLE your_temp_table LIKE your_table;
LOAD DATA INFILE '/tmp/your_file.csv'
INTO TABLE your_temp_table
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' -- new option
LINES TERMINATED BY '\r\n' -- new option
(id, product, sku, department, quantity);
UPDATE your_table
INNER JOIN your_temp_table on your_temp_table.id = your_table.id
SET your_table.quantity = your_temp_table.quantity;
DROP TEMPORARY TABLE your_temp_table;
언급URL : https://stackoverflow.com/questions/10253605/import-csv-to-update-only-one-column-in-table
'programing' 카테고리의 다른 글
UILabel 글꼴 크기 변경 애니메이션화 (0) | 2023.08.10 |
---|---|
PowerShell 문자열 형식 지정:콜론 문자로 인해 변수 값이 비어 있는 이유는 무엇입니까? (0) | 2023.08.10 |
열이 구분된 테이블을 사용하여 조회 (0) | 2023.08.10 |
Android를 사용하여 HTTP 요청 만들기 (0) | 2023.08.10 |
SQL Server CE 데이터베이스 파일을 프로그래밍 방식으로 생성 (0) | 2023.08.10 |