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

kam*_*ari 9 sql t-sql

我有一个文本文件中的员工名单.

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

select emplayeeID, Salary from employees where employee-name in "C:\myfile.txt"
Run Code Online (Sandbox Code Playgroud)

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

gbn*_*gbn 13

是的,使用OPENROWSET和BULK.你需要一个格式文件.

select
    E.emplayeeID, E.Salary
from
    employees E
    JOIN
    OPENROWSET (
             BULK 'c:\myfile.txt',
             FORMATFILE = 'c:\myfileformat.txt'
    ) B ON E.name  = B.name 
Run Code Online (Sandbox Code Playgroud)

  • +1 sheeesh !! 你总是有那些伟大的想法与我认为的真相相矛盾.... :-) (3认同)

mar*_*c_s 7

不,这是不可能的 - 至少不是在一个命令中.
(参见GBN的答案-如果你想,这可能的,即使在一个命令....)

你能做的是:

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

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

BULK INSERT EmployeeNames
FROM 'c:\myfile.txt'
WITH
(FIELDTERMINATOR = ',',
 ROWTERMINATOR = '\n')
Run Code Online (Sandbox Code Playgroud)

然后加入你的加入:

SELECT e.EmployeeID, e.Salary 
FROM dbo.Employees e
INNER JOIN dbo.EmployeeNames en ON e.Name = en.Name
Run Code Online (Sandbox Code Playgroud)