2012-05-21 2 views
1

엑셀 시트의 데이터를 가져 와서 데이터베이스에로드 할 수 있도록 SP에 테이블 이름을 입력하고 싶습니다. 그러나 다음과 같은 오류가 발생합니다. 당신은 그것을 바로 잡을 수 있습니까? 고맙습니다.저장 프로 시저를 통해 Excel에서 데이터 가져 오기

create proc Up_Export 
(
@Tablename as varchar(20) = null 
) 
AS 
SET NOCOUNT ON 
begin 
INSERT INTO @Tablename --Receiving error over here, informs incorrect syntax near @tablename 
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename) 
set nocount off 
end 
+0

역설적이게도 그러한 저장 프로 시저가 있습니다. 그러나 아직 문서화하지 않았습니다. 언젠가 곧, 나는 아마 그것을 나의 블로그에 넣을 것이다. –

+0

StackOverflow에 오신 것을 환영합니다. 코드, XML 또는 데이터 샘플을 게시하는 경우 ** 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바에서 "코드 샘플"버튼 ('{}) '을 클릭하십시오. 구문 강조! –

+2

당신은 varchar (20)에'INSERT '할 수 없습니다. 당신은 동적 SQL을 사용해야합니다. –

답변

3

나는 옳지 않은 두 가지를 봅니다.

먼저 당신이

INSERT INTO @Tablename 

당신은 그 자리에서 변수를 사용할 수 없다면. 대신이 동적 SQL을 사용해야합니다

문자열의 '안에'와 같이 큰 따옴표를 사용해야한다는 점에 유의하십시오. 작은 따옴표를 "이스케이프"하는 것은 필요하지 않습니다. 그렇지 않으면 문자열의 끝을 알리기 때문입니다.

를 잘하지 않는 것 두 번째 것은 당신이 당신은 당신의 두 번째 인수로 다음과 같은 뭔가를해야 @tablename

'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename) 

를 넣어 두 번째 인수는 시트 2가

'SELECT * FROM [Sheet2$]' 

귀하의 엑셀에있는 시트

몇 가지 변형을 시도하고 오류가 발생할 경우 SQL 파서가 제공하는 피드백에주의하십시오. 행운을 빕니다!

관련 문제