Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SELECT из базы по списку из файла  [new]
Alex Mi.
Member

Откуда:
Сообщений: 3
Новобранец-голодранец... ))

Всем здравия!
Возникла необходимость сделать селект из базы по списку из файла (csv/txt - неважно).
Что-то вроде такого
SELECT * FROM [instance].[dbo].[table] WHERE id IN ("C:\111.csv")
где 111.csv - файл со списком ID, их может быть 10-15тысяч.

Всезнающие Г и Я ничего внятного мне не рассказали, или я неверно спрашивал,
поэтому, как итог моих скитаний, я пришел к Вам за помощью.
27 апр 19, 21:54    [21873516]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Alex Mi.
Новобранец-голодранец... ))

Всем здравия!
Возникла необходимость сделать селект из базы по списку из файла (csv/txt - неважно).
Что-то вроде такого
SELECT * FROM [instance].[dbo].[table] WHERE id IN ("C:\111.csv")
где 111.csv - файл со списком ID, их может быть 10-15тысяч.

Всезнающие Г и Я ничего внятного мне не рассказали, или я неверно спрашивал,
поэтому, как итог моих скитаний, я пришел к Вам за помощью.


грузите данные из файла в таблицу, а дальше все как обычно
27 апр 19, 22:01    [21873521]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Alex Mi.
Member

Откуда:
Сообщений: 3
Посетитель
грузите данные из файла в таблицу, а дальше все как обычно

У меня уже имеется таблица с миллионами записей, из которых мне нужно получить только определенные (записанные в файлик).
Зачем мне insert?
27 апр 19, 22:12    [21873529]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36970
Alex Mi.
Посетитель
грузите данные из файла в таблицу, а дальше все как обычно

У меня уже имеется таблица с миллионами записей, из которых мне нужно получить только определенные (записанные в файлик).
Зачем мне insert?
В базе можно сделать более одной таблицы. А потом их соединять так, чтобы из одной можно было выбрать то, что есть в другой.

Сообщение было отредактировано: 27 апр 19, 22:29
27 апр 19, 22:27    [21873535]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Alex Mi.
Member

Откуда:
Сообщений: 3
Гавриленко Сергей Алексеевич
В базе можно сделать более одной таблицы. А потом их соединять так, чтобы из одной можно было выбрать то, что есть в другой.

Моего уровня познаний в sql тогда не хватит, придется по старинке - вытягивать таблицу экспортом и крутить в экселе ВПР...
А вообще странно, что IN (xxx,xxxy,yyx, .....) существует, а подтягивание этого списка с файла - нет.
27 апр 19, 22:37    [21873538]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Alex Mi.,

В Oracle есть такая сущность, как "внешняя таблица" (EXTERNAL TABLE), позволяющая обращаться к файлам, как к таблицам (это совершенно точно и многократно мной использовалось в разных задачах по "заливке" данных из файлов в базу).
В MS SQL Server тоже есть EXTERAL TABLE. Но у меня нет опыта работы с ними и понимания того, для чего они нужны. Разбираться для ответа вам - мне, конечно, лень. Если хотите - сами "покурите"...
28 апр 19, 05:14    [21873599]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3247
Щукина Анна,

Сиквельный EXTERNAL TABLE не очень похож на оракловский, здесь это скорее бигдато-хадупный интерфейс. Судя по доке, с файлом скорее всего не заведется.


Alex Mi,

Я бы скорее смотрел в сторону Linked Server / OPENROWSET на этот файл, но сможет ли линк прочитать CSV... хз, возможно зависит от выбранного драйвера доступа. Если же использовать OPENROWSET, то скорее всего еще и с формат-файлом повозиться придется (к счастью, в доке есть примеры).

Как вариант, еще можно написать CLR-сборку, которая будет читать указанный файл и возвращать датасет на выходе. Но скорее всего придется делать ее UNSAFE, ну или как минимум EXTERNAL_ACCESS. Сам с этим не работал, не в курсе деталей.

В общем, пилите, ТС, пилите. Варианты есть, выбирайте что вам подходит по 1) уровню вашей личной компетенции и 2) степени параноидальности вашей СБ, если таковая имеется.
28 апр 19, 05:33    [21873600]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Alex Mi.
Гавриленко Сергей Алексеевич
В базе можно сделать более одной таблицы. А потом их соединять так, чтобы из одной можно было выбрать то, что есть в другой.

Моего уровня познаний в sql тогда не хватит, придется по старинке - вытягивать таблицу экспортом и крутить в экселе ВПР...
А вообще странно, что IN (xxx,xxxy,yyx, .....) существует, а подтягивание этого списка с файла - нет.


можете и через where in написать, раз джоины слишком сложны для вас. он тоже поддерживает выбор значений из таблицы.
28 апр 19, 07:55    [21873605]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54175
Alex Mi.
Гавриленко Сергей Алексеевич
В базе можно сделать более одной таблицы. А потом их соединять так, чтобы из одной можно было выбрать то, что есть в другой.

Моего уровня познаний в sql тогда не хватит, придется по старинке - вытягивать таблицу экспортом и крутить в экселе ВПР...
А вообще странно, что IN (xxx,xxxy,yyx, .....) существует, а подтягивание этого списка с файла - нет.
даже если бы было, файл должен был бы лежать где-то на сервере
29 апр 19, 05:06    [21873887]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
andreymx
Alex Mi.
пропущено...

Моего уровня познаний в sql тогда не хватит, придется по старинке - вытягивать таблицу экспортом и крутить в экселе ВПР...
А вообще странно, что IN (xxx,xxxy,yyx, .....) существует, а подтягивание этого списка с файла - нет.
даже если бы было, файл должен был бы лежать где-то на сервере


скорее, в месте, доступном для учетки, из под которой служба запущена. это может быть и сетевая шара.
29 апр 19, 06:25    [21873894]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54175
Посетитель
andreymx
пропущено...
даже если бы было, файл должен был бы лежать где-то на сервере


скорее, в месте, доступном для учетки, из под которой служба запущена. это может быть и сетевая шара.
возможно... просто у нас все сетевые шары закрыты
29 апр 19, 07:55    [21873915]     Ответить | Цитировать Сообщить модератору
 Re: SELECT из базы по списку из файла  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
andreymx
Посетитель
пропущено...


скорее, в месте, доступном для учетки, из под которой служба запущена. это может быть и сетевая шара.
возможно... просто у нас все сетевые шары закрыты


я почему-то уверен, что ТС собирается решать свою задачу не на ваших серверах :)
29 апр 19, 08:32    [21873926]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить