BULK INSERT를 사용하여 SQL 데이터베이스로 가져 오는 CSV 파일을 매주받습니다. 임시 테이블에 삽입 한 다음 새 레코드를 삽입하고 수정 된 레코드를 업데이트하여 주 테이블과 병합합니다. 코드는 다음과 같습니다 내가 무엇을 달성하고자하는대량 입력 후 SQL 트리거
BULK INSERT dbo.temp
FROM 'C:\Users\Administrator\Documents\20120125.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
MERGE dbo.main AS TargetTable
USING dbo.temp AS SourceTable
ON (TargetTable.name = SourceTable.name)
WHEN NOT MATCHED BY TARGET
THEN INSERT (name, age, gender, father, mother, teacher, mathsrating, historyrating, sciencerating, englishrating)
VALUES(SourceTable.name, SourceTable.age, SourceTable.gender, SourceTable.father, SourceTable.mother, SourceTable.teacher, SourceTable.mathsrating, SourceTable.historyrating, SourceTable.sciencerating, SourceTable.englishrating)
WHEN MATCHED
THEN UPDATE SET
TargetTable.name = SourceTable.name,
TargetTable.age = SourceTable.age,
TargetTable.gender = SourceTable.gender,
TargetTable.father = SourceTable.father,
TargetTable.mother = SourceTable.mother,
TargetTable.teacher = SourceTable.teacher,
TargetTable.mathsrating = SourceTable.mathsrating,
TargetTable.historyrating = SourceTable.historyrating,
TargetTable.sciencerating = SourceTable.sciencerating,
TargetTable.englishrating = SourceTable.englishrating;
DELETE FROM dbo.temp
내가 변경된 내용의 역사를 가질 수 있도록 자신의 '이전'값을 갖는 새 테이블에 저장된 업데이트로 덮어 쓰기 기록을하는 것입니다. 나는 SQL에 상당히 익숙하지만 조금 연구했는데 방아쇠가 접근하는 방법 일지 모르지만이 접근 방법에 대한 제안을 환영 할 것입니다.
감사
매트
예, 죄송는 SQL 서버 2012 답장을 – MrMatt