2016-09-27 4 views
1

데이터의 여러 행을 삽입하려고하는 로컬 데이터베이스가 있지만 중복을 원하지 않습니다. 내가 삽입하려고하는 두 번째 DB가 없습니다. SQL 파일이 있습니다.데이터를 삽입하고 특정 열을 검사하여 중복을 피하십시오.

(db)artists 
    (table)names->  ID | ArtistName | ArtistURL | Modified 

나는이 삽입 할 노력하고 있어요 :

INSERT names (ArtistName, Modified) 
VALUES (name1, date), 
     (name2, date2), 
     ... 
     (name40, date40) 

문제는, 어떻게 삽입 할 수있는 데이터를하고 확인하여 중복을 피하기 구조는 내가에 삽입있어 데시벨이입니다 SQL을 사용하여 삽입하려는이 데이터 목록에 특정 열을?

+2

mySQl, SQL Server 중 어떤 RDBMS를 사용하고 있습니까? – EoinS

+0

xampp에서 SQLite를 사용하여 MariaDB를 사용하고 있습니다. – DJSweetness

+0

어떻게 CSV에서 값을 입력합니까? (name1, date) 형식으로 포맷 할 스크립트가 있습니까? – EoinS

답변

0

무엇을 복제할까요? 이름이 중복 되었습니까? 행이 중복 되었습니까? 나는 어떤 dup도 가정하지 않을 것이다 ArtistName.

  1. 테이블에 UNIQUE(ArtistName) (또는 PRIMARY KEY)이 있어야합니다.
  2. IGNORE 대신 INSERT IGNORE을 사용하십시오.

(없음 LEFT JOIN 등)

0

나는 @Hart CO의 조언 완전히 새로운 테이블에 내 모든 값을 삽입하여 조금 다음 끝났다. 그런 다음이 SQL 문을 사용했습니다.

SELECT ArtistName 
FROM testing_table 
WHERE !EXISTS 
(SELECT ArtistName FROM names WHERE 
testing_table.ArtistName = testing_table.ArtistName) 

이렇게하면 내 이름이 아닌 데이터에있는 모든 아티스트 이름을 얻을 수 있습니다. 그런 다음 sql 파일로 내 보낸 다음 INSERT를 약간 조정하여 해당 데이터가있는 이름 테이블에 삽입했습니다.

INSERT IGNORE INTO `names` (ArtistName) VALUES 
*all my values from the exported data* 

여기서 (ArtistName)에는 반환 된 데이터가있을 수 있습니다. 예 : (아티스트 이름, 아티스트 URL, 수정 됨). 내보내기에서 반환 된 값이 3 개의 값을 가진 경우.

아마도 이것은 가장 효율적이지는 않지만 내가하려는 일에 효과적이었습니다.