используя ввод из текстового файла для предложения WHERE - PullRequest
9 голосов
/ 30 декабря 2010

У меня есть список имен сотрудников в текстовом файле.

Вместо того, чтобы искать каждое имя одно за другим, я хочу найти в своей базе данных один раз все имена текстового файла.Что-то вроде:

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

Возможно ли это?Если да, то какой будет команда SQL для этого?Спасибо.

Ответы [ 3 ]

12 голосов
/ 30 декабря 2010

Да, используйте OPENROWSET с 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 
7 голосов
/ 30 декабря 2010

Нет, это невозможно - по крайней мере, ни в одной команде.
(см. Ответ gbn - если вы хотите, то возможно даже водна команда ....)

Что вы можете сделать, это:

  • массовая загрузка имен ваших сотрудников из текстового файла во временную таблицу
  • , затем выполните JOIN между таблицей 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
0 голосов
/ 30 декабря 2010

Вы можете проанализировать ваш текстовый файл в строку, разделенную запятыми

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

Многое будет зависеть от: а) размера вашего текстового файла и б) какой платформы вы используете для построения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...