2010-12-30 3 views
7

텍스트 파일에 직원 이름 목록이 있습니다.WHERE 절의 텍스트 파일에서 입력 사용

각 이름을 하나씩 검색하는 대신 텍스트 파일의 모든 이름에 대해 한 번 데이터베이스를 검색하려고합니다. 어떤 것은 좋아한다 :

select emplayeeID, Salary from employees where employee-name in "C:\myfile.txt" 

그것은 가능하니? 그렇다면 SQL 명령은 무엇입니까? 감사.

답변

6

아니요, 적어도 하나의 명령에는 불가능합니다.
(GBN의 답변을 참조 - 당신이 그것을 도 하나의 명령에서 가능한입니다하려면 ....)

은 당신이 할 수있는 것은 이것이다 :

  • 대량 부하 텍스트 파일의 직원 이름을 임시 테이블에 저장
  • dbo.Employees 테이블과 방금 작성한 임시 일괄로드 테이블간에 JOIN을 수행하십시오.
일괄

같은 것을 사용, 당신의 이름을 삽입합니다

BULK INSERT EmployeeNames 
FROM 'c:\myfile.txt' 
WITH 
(FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n') 

을 다음 할 당신의 가입 :

SELECT e.EmployeeID, e.Salary 
FROM dbo.Employees e 
INNER JOIN dbo.EmployeeNames en ON e.Name = en.Name 
+0

시도해 보겠습니다. 내 텍스트 파일에 직원의 성/이름이 하나만있는 경우 "WITH ..."문을 포함시켜야합니까? – kamari

+0

@kamari : 필드를 구분하는 방법 (FIELDTERMINATOR = ....')과 행 (줄)을 어떻게 분리 할지를 일괄 적으로 알려 주어야합니다. –

+0

예. 알았습니다. 그리고 그것은 나를 위해 잘 일했다 .... 고마워 많은 마크 ..... – kamari

0

당신은 쉼표로 구분 된 문자열

select employeeID, Salary from employees where employee-name in ('Joe Blogs', 'Susan Smith', 'Jimi Hendrix') 
에 텍스트 파일을 구문 분석 할 수

많은 것들이 a) 당신의 텍스트 파일의 크기와 b) 당신이 당신의 쿼리를 구성하기 위해 사용하고있는 플랫폼에 달려 있습니다.

10

예, OPENROWSET with BULK을 사용하십시오. 그래도 format 파일이 필요합니다.

select 
    E.emplayeeID, E.Salary 
from 
    employees E 
    JOIN 
    OPENROWSET (
      BULK 'c:\myfile.txt', 
      FORMATFILE = 'c:\myfileformat.txt' 
    ) B ON E.name = B.name 
+2

+1 sheeesh !! 당신은 항상 내가 생각한 진리와 모순되는 위대한 아이디어를 가지고 있습니다. :-) –

+0

내 친구, 이것은 단순히 멋진 답변입니다! +1 그리고 만약 내가 +10 수 있습니다! –

+0

@ marc_s, 나는 우리 모두가 당신 같은 사람조차도 새로운 것을 배울 수 있다고 생각합니다. 나는 네가 내 친구를 배울 수있는 것이 아무것도 없다고 생각하지 않았다! :) –