BULK INSERT 을 이용해서 텍스트파일을 디비에 저장하는데요
텍스트파일이 로컬에 있는건 잘되는데 타서버에 있는 텍스트파일을 읽어올라면 어떻게 하나요?
BULK INSERT dbo.table FROM "http:\\xxxx\x.txt" 이런식으로해도 안되고 여러방법을 찾아보면서 해봤는데 잘안되서 질문합니다.
Comment 3
-
악마곰
2015.06.02 18:06
원격 데이터 파일에서 대량 가져오기
BULK INSERT 또는 INSERT...SELECT * FROM OPENROWSET(BULK...)을 사용하여 다른 컴퓨터에서 데이터를 대량으로 가져오려면 두 컴퓨터 간에 데이터 파일을 공유해야 합니다.
공유 데이터 파일을 지정하려면 \\Servername\Sharename\Path\Filename의 일반 형식으로 해당 UNC(Universal Naming Convention) 이름을 사용합니다.
또한 데이터 파일을 액세스하는 데 사용되는 계정에는 원격 디스크의 파일을 읽는 데 필요한 사용 권한이 있어야 합니다.
--------------------------------------------------------------------------------------------------------------------
기본적으로 원격지 파일 지정 시 \\Servername\Sharename\Path\Filename 의 형태로 지정 해야 합니다.
또한, sql 설치된 서버에서 최소한 원격지 파일에 대한 읽기 권한이 있어야 겠네요...
테스트 해보니 서버에서 원격지 접근 권한이 있으면 아래의 bulk insert 대량 가져오기 정상으로 확인 됩니다.
BULK INSERT table_name FROM '\\Servername\Sharename\Path\Filename'; GO
msdn : https://msdn.microsoft.com/ko-kr/library/ms175915.aspx
-
처리짱
2015.06.03 19:13
로컬에서
BULK INSERT dbo.table FROM "http:\\xxxx\x.txt"
이게 된다고요?
data_file must specify a valid path from the server on which SQL Server is running." xml:space="preserve">data_file은 SQL Server가 실행 중인 서버에서 유효한 경로를 지정해야 합니다. data_file is a remote file, specify the Universal Naming Convention (UNC) name." xml:space="preserve">data_file이 원격 파일일 경우 UNC(Universal Naming Convention) 이름을 지정합니다. Systemname\ShareName\Path\FileName." xml:space="preserve">UNC 이름의 형식은 \\Systemname\ShareName\Path\FileName입니다. \\SystemX\DiskZ\Sales\update.txt." xml:space="preserve">예를 들면 \\SystemX\DiskZ\Sales\update.txt와 같습니다.