2017-11-20 1 views
0

나는`내 opencart 데이터베이스에 파일을 업로드하려고 가입 내부에 널 (null)을 생산하고 나는이 쿼리를 사용하고 있습니다 :로드 DATA LOCAL INFILE, 나는 제품 UPC 번호를 업로드 대량하려는 갱신

CREATE TEMPORARY TABLE `my_temp_table` 
(
    product_id INT(11), 
    name VARCHAR(255), 
    upc VARCHAR(12) 
); 

LOAD DATA LOCAL INFILE '/home/mupckuco/dev/oc_product.csv' 
INTO TABLE `my_temp_table` 
FIELDS TERMINATED BY ',' 
(`product_id`, `name`, `upc`); 

UPDATE `oc_product` 
INNER JOIN `my_temp_table` on `my_temp_table`.`product_id` = `oc_product`.`product_id` 
SET `oc_product`.`upc` = `my_temp_table`.`upc`; 

DROP TEMPORARY TABLE `my_temp_table`; 

SELECT `oc_product`.`product_id` , `oc_product_description`.`name` , `oc_product`.`upc` 
FROM `oc_product` 
INNER JOIN `oc_product_description` ON `oc_product`.`product_id` = `oc_product_description`.`product_id` 

하지만 불행하게도,이 라인

UPDATE `oc_product` INNER JOIN `my_temp_table` on `my_temp_table`.`product_id` = `oc_product`.`product_id` SET `oc_product`.`upc` = `my_temp_table`.`upc` 
:

첫째 나는 제품 ID, 제품 이름 및 다음 쿼리와 제품 UPC와 열이있는 테이블을 수출했다

은 테이블에 NULL을 삽입하고 있습니다.

나는 임시 테이블이 아닌 일반 테이블을 만들기 위해 먼저 시도 했으므로 UPC 열의 모든 항목이 NULL로 삽입되었다.

Microsoft Excel 용 CSV로 내보내기를하고 있는데 같은 확장명으로 파일을 저장하고 있습니다. 문제는 어디에있을 수 있습니까?

이 업데이트 한 후 CSV 파일에서 몇 가지 예와 my_temp_table 결과입니다

excel csv

my_temp_table

+0

'LOAD DATA INFILE'뒤에 csv ** 및 ** 임시 테이블 샘플의 행 샘플을 표시하십시오. – Parfait

+0

나는 질문을 편집했다, 이것이 명확하게 희망한다 –

+0

중대한! 감사. Excel 파일 열 B 및 C의 서식을 * Text *로 지정해보십시오. 'LOCAL' 명령 행에 추가하십시오 : 'ENCLOSED BY' "'\ r \ n'; ' – Parfait

답변

1

와우, 나는 누군가가 데이터베이스에 직접 CSV를 가져올 것 적이 없다 JOIN으로 업데이트를 실행하십시오. 아마 PHP 개발자가 아닌 DBA가 될 수 있습니다.

어쨌든, 난 당신이 PHP에서 배열에서 CSV를 가져 제안 : 위에

$csv = array_map('str_getcsv', file('/home/mupckuco/dev/oc_product.csv')); 

그리고 루프가 UPDATE 문을 생성합니다.

+0

PHP로이 작업을 수행하는 방법은 무엇입니까? opencart를 사용하여 Im으로 만들 수 있었으면 좋겠습니까? –