我在文本文件中有员工姓名列表。
我不是一个一个地搜索每个名字,而是想搜索我的数据库一次,查找文本文件的所有名称。有点像:
select emplayeeID, Salary from employees where employee-name in "C:\myfile.txt"
有可能吗?如果是,那么它的SQL命令是什么?感谢。
答案 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)您用于构建查询的平台。