2013-01-09 4 views
2

Excel에서 MS SQL 서버로 데이터베이스를 변환 중이며 기본적으로 단서가 없습니다.Excel에서 SQL Server로 데이터 가져 오기/업데이트

엑셀 파일은 그룹 ID는, 이름, 회원,

는 SQL 테이블이 같은 필드가 있습니다 비고 의 열 머리글이 있습니다.

SQL을 업데이트 할 때 일부 레코드는 완전히 새로운 것이므로 추가해야 할 필요가 있고, 다른 하나는 두 개 이상의 열을 필요로하지만 대부분의 레코드는 전혀 필요하지 않습니다. 지금까지 나는 게으른 방법을 취했다. &은 & 파일을 모두 잘라 버렸지 만, 이니?

+1

파일을 별도의 테이블로 가져 오면 거기에서 모든 업데이트를 수행 할 수 있습니다. SQL Server 버전에 따라 MERGE 문을 사용할 수 있습니다. 삽입을 노크하는 데 너무 오래 걸려서는 안되며 업데이트 문이 필요합니다. – twoleggedhorse

+0

@twoleggedhorse 아마도 답이 될 것입니다. 그 대답과 좋은 것입니다. – Jeremy1026

+0

공정한만큼, 나는 이것을 대답했다 : – twoleggedhorse

답변

4

파일을 별도의 테이블로 가져 오면 거기에서 모든 업데이트를 수행 할 수 있습니다. SQL Server 버전에 따라 MERGE 문을 사용할 수 있습니다. 삽입을 노크하는 데 너무 오래 걸려서는 안되며 업데이트 문이 필요합니다. 업데이트에 대한이 같은

뭔가 : 삽입이 같은

UPDATE o 
SET name = i.name 
FROM originaltablename o 
     INNER JOIN importedexceltablename i 
      ON o.GroupID = i.GroupID 
WHERE o.name <> i.name 

그리고 뭔가 :

INSERT INTO originaltablename 
SELECT i.* 
FROM importedexceltablename i 
     LEFT JOIN originaltablename o 
      ON o.GroupID = i.GroupID 
WHERE o.GroupID IS NULL 

그래도 조심은, 이것은 단지 예를 들어 당신이 가야 할 당신의 천국 '으로 적절한 해결책을 얻기에 충분한 정보를 제공해야합니다.

+0

고맙습니다! 며칠 전 괜찮 았지만, ** "Msg 208, Level 16, State 1, Line 3, 잘못된 개체 이름 'o'을 계속 가져 오는 이유가 무엇인지 모르겠다. 오류 내가 사용하고 전체 코드는 다음과 같습니다 가'[보트] --select *에서 [DBO] [그룹]으로 --select * 사용상 - [DBO]에서 [.을. 그룹 $]을 i로 입력 ------ WHERE ID가 Null입니다. 는 O INTO INSERT 난을 선택 간다. * [DBO]에서. ImportGrp] 제가 LEFT는 [DBO]에 가입. 단체] O ON o.ID = i.ID o.ID가 NULL WHERE PRINT '추가 된 행 수는'+ CAST (@@ ROWCOUNT는 char (6)); –

+0

줄을 "INSERT INTO [dbo]. [Groups]"로 변경하십시오. – twoleggedhorse

관련 문제