2010-05-17 2 views
17

텍스트 파일의 데이터를 ms SQL로 읽는 데 문제가 있습니다. 내 c : \ data.txt라는 텍스트 파일을 만들었지 만 어떤 이유로 ms sql 서버가 파일을 찾을 수 없습니다. "대량로드 할 수 없습니다."파일 "c : \ data.txt"가 없습니다. "라는 오류 메시지가 나타납니다. 어떤 아이디어?대량로드 할 수 없습니다. "c : data.txt"파일이 없습니다.

데이터 파일 (예 나는 데이터가 엉터리 보인다 알고 있지만, 현실 세계에서 클라이언트에서 오는 방법 먹으 렴) :

01-04 10.338,18 0,00 597.877,06- 5 0,7500 62,278- 
06-04 91.773,00 9.949,83 679.700,23- 1 0,7500 14,160- 
07-04 60.648,40 149.239,36 591.109,27- 1 0,7500 12,314- 
08-04 220.173,70 213.804,37 597.478,60- 1 0,7500 12,447- 
09-04 986.071,39 0,00 1.583.549,99- 3 0,7500 98,971- 
12-04 836.049,00 1.325.234,79 1.094.364,20- 1 0,7500 22,799- 
13-04 38.000,00 503.010,49 629.353,71- 1 0,7500 13,111- 
14-04 286.400,00 840.126,50 75.627,21- 1 0,7500 1,575- 

는 SQL :

CREATE TABLE #temp 
(
    vchCol1 VARCHAR (50), 
    vchCol2 VARCHAR (50), 
    vchCol3 VARCHAR (50), 
    vchCol4 VARCHAR (50), 
    vchCol5 VARCHAR (50), 
    vchCol6 VARCHAR (50), 
    vchCol7 VARCHAR (50) 
) 

BULK insert #temp 
FROM 'c:\data.txt' 
WITH 
(
FIELDTERMINATOR = ' ', 
ROWTERMINATOR = '\n' 
) 

select * from #temp 
drop table #temp 
+2

참고로 BULK 삽입은 SQL이 아니며 MS SQL Server 확장입니다. – extraneon

답변

35

온 달린다 서버이므로 서버의 C:\data.txt을 서버의 C: 드라이브에서 찾으십시오.

또한 사용중인 로그온에 C : 읽기 권한이 있는지 확인하십시오.

+1

그래서 우리는 이미 이걸 가지고 있습니다.하지만 ... 작동하도록 바꾸어 놓은 것은 무엇입니까? 네트워크를 통해 localdrive에서 파일을 가져 오려면? 아니면 서버에 파일을 가져 오는 것이 불가능하다는 통계가 누락 되었습니까? 건배 -Jeremy –

+0

당신은 unc 공유를 통해 그것을 당겨야 할 것입니다 –

+0

오, 그래 그게 의미가 있습니다. : D 조 거기에 롤 생각하지 못했 ... –

8

해당 파일은 SQL Server의 C : \ 드라이브에 있습니까? SQL BULK INSERT 등은 항상 과 SQL Server 컴퓨터의 로컬 드라이브 만 작동합니다. SQL Server가 자신의 로컬 드라이브에 연결할 수 없습니다.

파일을 SQL Server의 C : \ 드라이브에 넣고 다시 시도해야합니다.

업데이트 : @bp_, 확인, 수정 - 파일은 은 당신이 UNC 경로를 사용하여 SQL Server 시스템에서 액세스 할 수있는 공유에있을 수 있습니다. 하지만 다시 말해서 먼저 공유를 만들어야하며 SQL Server 프로세스가 실행중인 사용자는 해당 공유에 대한 액세스 권한이 있어야합니다. 먼저 인프라 오버 헤드를 약간 설정하지 않고 PC의 로컬 드라이브에서 파일을 간단히 가져올 수 없습니다.

0

이것은 주로 권한 문제입니다. 해당 드라이브에 대한 권한이 없을 수도 있습니다. 사용중인 로그온이 읽었거나 가능하면 모든 권한을 가지고 있는지 확인하십시오. 그것은 로컬 컴퓨터에서 나를 위해 일했습니다.

관련 문제