2011-09-19 4 views
0

나는 CSV 파일을 읽고 그 값을 SQL 테이블에 저장하는 PHP file을 가지고있다.mysql 쿼리 도움말 - REPLACE INTO?

는 SQL 테이블 문제는 아이디, 이름 만 입력을 저장하지 않는 CSV file 4 열

id - primary key (just auto incremented integer) 
name - text value of an object name 
type - an integer value representing the type of object 
active - a bool to set if the object is active 

있습니다.

다음 작업을 수행하고이 작업을 수행하는 가장 좋은 방법은 최소한의 쿼리를 사용하는 것이 무엇인지 궁금합니다.

어떤 도움이 될 것

For each entry in the CSV 
if (name and type already exists in table) 
    set active to 1 
else 
    add new entry to the table 

return the id for the existing or new entry 

테이블의 모든 항목에 대한 active to 0 설정이 크게

감사

  • 단지 메모를 감사, 그것은 난 후 바로 MySQL의 쿼리입니다, PHP 코드가 아님 ...

답변

1

yo 당신이이 개 분야의 "독특한"인덱스를 만들 필요가

첫째 : u는 MySQL을 사용하는

INSERT INTO `table` (`name`,`type`,`active`) VALUES ($name,$type,0) 
    ON DUPLICATE KEY UPDATE active = 1 
: nametype을 다음

이 쿼리를 사용하여 데이터를 삽입 (이것은 하나 개의 인덱스없는 두의) 당신은 그냥 쿼리 ID 얻기 위하여

(스마트 방법 -에 mysql_insert_id()를 삽입 UPDATE 작동하지 않습니다)

 
SELECT id FROM `table` WHERE `name`= '$name' AND `type` = '$type' 
+0

안녕 izeed을, 덕분에 많이, 내가 인식하지 않았다 나는 C 수 하나 이상의 값을 갖는 고유 한 키를 다시 생성하십시오. –