使用WHERE子句的文本文件输入

时间:2010-12-30 13:21:49

标签: sql tsql

我在文本文件中有员工姓名列表。

我不是一个一个地搜索每个名字,而是想搜索我的数据库一次,查找文本文件的所有名称。有点像:

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

有可能吗?如果是,那么它的SQL命令是什么?感谢。

3 个答案:

答案 0 :(得分:12)

是的,请使用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 

答案 1 :(得分:7)

不,这是不可能的 - 至少不是在一个命令中。
(参见gbn的答案 - 如果你愿意的话,即使在一个命令中 也是如此......)

你能做的是:

  • 将您的员工姓名从文本文件批量加载到临时表
  • 然后在您的dbo.Employees表与您刚刚填写的临时批量加载表之间进行联接

要批量插入您的姓名,请使用以下内容:

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

答案 2 :(得分:0)

您可以将文本文件解析为逗号分隔的字符串

select employeeID, Salary from employees where employee-name in ('Joe Blogs', 'Susan Smith', 'Jimi Hendrix')

很多将取决于a)文本文件的大小和b)您用于构建查询的平台。